@wrongstack/webui 0.284.1 → 0.286.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/App.d.ts +2 -0
- package/dist/App.d.ts.map +1 -0
- package/dist/assets/{AnalyticsDashboard-BBoAzpgL.js → AnalyticsDashboard-BDpQqHtX.js} +1 -1
- package/dist/assets/AutoPhaseView-BL_RSAcj.js +1 -0
- package/dist/assets/{ChangesView-4X9cQM4r.js → ChangesView-Dqfa8YFA.js} +1 -1
- package/dist/assets/{CodeEditor-C8hiA7LI.js → CodeEditor-De8voGEi.js} +1 -1
- package/dist/assets/DebugDashboard-D0C8_NWJ.js +1 -0
- package/dist/assets/{DesignGalleryView-CzF24Ppi.js → DesignGalleryView-Dwn2JYAL.js} +1 -1
- package/dist/assets/KanbanView-BUugea4e.js +1 -0
- package/dist/assets/MailboxDetailView-DCjSrQNI.js +1 -0
- package/dist/assets/OfficeMapPanel-Bqqys7xo.js +4 -0
- package/dist/assets/{ProcessMonitor-pm8Ih7-q.js → ProcessMonitor-CS1LSf39.js} +1 -1
- package/dist/assets/{QueuePanel-Lv54tvvk.js → QueuePanel-Cs7k3M-4.js} +1 -1
- package/dist/assets/{RefreshDebugView-0VzJJqhZ.js → RefreshDebugView-Di0lyXKv.js} +1 -1
- package/dist/assets/SddBoardView-Dv9R7tBM.js +2 -0
- package/dist/assets/SddFlowGraph-BGPIWq7W.js +1 -0
- package/dist/assets/SddWizard-BWaJb5ZH.js +1 -0
- package/dist/assets/SessionsDashboard-B1u7rjTK.js +1 -0
- package/dist/assets/SetupScreen-nZMY7jM6.js +1 -0
- package/dist/assets/SkillDetailView-CQevybc9.js +3 -0
- package/dist/assets/SpecsView-Xw9k8Llw.js +1 -0
- package/dist/assets/TerminalPanel-CPuqFiXC.js +1 -0
- package/dist/assets/{activity-CcEdxJjx.js → activity-Bt5JliZ2.js} +2 -2
- package/dist/assets/activity-DVbfo6OS.js +5 -0
- package/dist/assets/activity-DkmpcH1_.js +5 -0
- package/dist/assets/{activity-T9kySYDT.js → activity-HUfcj2wp.js} +3 -3
- package/dist/assets/activity-lQ47COGt.js +5 -0
- package/dist/assets/activity-mgahm8RV.js +5 -0
- package/dist/assets/activity-naMKylQi.js +5 -0
- package/dist/assets/chat-BNf8yQ-i.js +1 -0
- package/dist/assets/chat-BwmYDkLr.js +1 -0
- package/dist/assets/chat-C_9_T_Py.js +1 -0
- package/dist/assets/chat-CmZiF8Sm.js +1 -0
- package/dist/assets/chat-DW62ursN.js +1 -0
- package/dist/assets/chat-DfjGjYKF.js +1 -0
- package/dist/assets/chat-eXJFi4bY.js +1 -0
- package/dist/assets/chat-store-Dy1m3oen.js +5 -0
- package/dist/assets/commandPalette-BcMV6x3_.js +1 -0
- package/dist/assets/commandPalette-C4o2rUOp.js +1 -0
- package/dist/assets/commandPalette-C5U6qfth.js +1 -0
- package/dist/assets/commandPalette-CBJfByB7.js +1 -0
- package/dist/assets/commandPalette-CrYfIhnW.js +1 -0
- package/dist/assets/commandPalette-Dgd8HfNm.js +1 -0
- package/dist/assets/common-D8_r1x8x.js +1 -0
- package/dist/assets/common-suUxW9sA.js +1 -0
- package/dist/assets/{i18n-CkkVJCs9.js → i18n-ClFSbktB.js} +2 -2
- package/dist/assets/index-DGwt4pL3.js +157 -0
- package/dist/assets/index-pw_NYdQ9.css +1 -0
- package/dist/assets/local-prefs-DUm4LFyu.js +1 -0
- package/dist/assets/markdown-BRAejDWd.js +44 -0
- package/dist/assets/{monaco-XnLmrAXJ.js → monaco-MjnRih9i.js} +1 -1
- package/dist/assets/{monaco-theme-Lsd14tM-.js → monaco-theme-DhdHiZEb.js} +1 -1
- package/dist/assets/{session-store-P-JnaPPK.js → session-store-BOmBeF9r.js} +1 -1
- package/dist/assets/settings-BehzuKKh.js +1 -0
- package/dist/assets/settings-CO8sA1-8.js +1 -0
- package/dist/assets/settings-CSb_3QO0.js +1 -0
- package/dist/assets/settings-CVkZ15Hv.js +1 -0
- package/dist/assets/settings-DRDu_6WL.js +1 -0
- package/dist/assets/settings-Dj8eonZG.js +1 -0
- package/dist/assets/settings-DkZAyCk6.js +1 -0
- package/dist/assets/ui-store-LCpXBvQT.js +1 -0
- package/dist/assets/utils-Bl7Yr7Bw.js +1 -0
- package/dist/assets/{vendor-CyLvG8N0.js → vendor-C9iFsXuW.js} +28 -28
- package/dist/assets/ws-client-WVS5hdJj.js +1 -0
- package/dist/assets/{xyflow-oYDGUYW6.js → xyflow-YzHYNDhB.js} +3 -3
- package/dist/components/AgentTranscript.d.ts +13 -0
- package/dist/components/AgentTranscript.d.ts.map +1 -0
- package/dist/components/AgentsMonitor.d.ts +26 -0
- package/dist/components/AgentsMonitor.d.ts.map +1 -0
- package/dist/components/AgentsPage/format.d.ts +23 -0
- package/dist/components/AgentsPage/format.d.ts.map +1 -0
- package/dist/components/AgentsPage.d.ts +49 -0
- package/dist/components/AgentsPage.d.ts.map +1 -0
- package/dist/components/AnalyticsDashboard.d.ts +2 -0
- package/dist/components/AnalyticsDashboard.d.ts.map +1 -0
- package/dist/components/AutoPhaseView.d.ts +15 -0
- package/dist/components/AutoPhaseView.d.ts.map +1 -0
- package/dist/components/AutonomyPicker.d.ts +21 -0
- package/dist/components/AutonomyPicker.d.ts.map +1 -0
- package/dist/components/BoardView.d.ts +14 -0
- package/dist/components/BoardView.d.ts.map +1 -0
- package/dist/components/ChangesView.d.ts +10 -0
- package/dist/components/ChangesView.d.ts.map +1 -0
- package/dist/components/ChatInput/code-detect.d.ts +20 -0
- package/dist/components/ChatInput/code-detect.d.ts.map +1 -0
- package/dist/components/ChatInput/file-mention-picker.d.ts +15 -0
- package/dist/components/ChatInput/file-mention-picker.d.ts.map +1 -0
- package/dist/components/ChatInput/image-attachments.d.ts +58 -0
- package/dist/components/ChatInput/image-attachments.d.ts.map +1 -0
- package/dist/components/ChatInput/queued-messages.d.ts +9 -0
- package/dist/components/ChatInput/queued-messages.d.ts.map +1 -0
- package/dist/components/ChatInput/slash-commands.d.ts +17 -0
- package/dist/components/ChatInput/slash-commands.d.ts.map +1 -0
- package/dist/components/ChatInput/slash-routing.d.ts +87 -0
- package/dist/components/ChatInput/slash-routing.d.ts.map +1 -0
- package/dist/components/ChatInput/use-paste-drop.d.ts +39 -0
- package/dist/components/ChatInput/use-paste-drop.d.ts.map +1 -0
- package/dist/components/ChatInput.d.ts +5 -0
- package/dist/components/ChatInput.d.ts.map +1 -0
- package/dist/components/ChatView/ThinkingBubble.d.ts +8 -0
- package/dist/components/ChatView/ThinkingBubble.d.ts.map +1 -0
- package/dist/components/ChatView/index.d.ts +2 -0
- package/dist/components/ChatView/index.d.ts.map +1 -0
- package/dist/components/ChatView/utils.d.ts +44 -0
- package/dist/components/ChatView/utils.d.ts.map +1 -0
- package/dist/components/ChatView.d.ts +2 -0
- package/dist/components/ChatView.d.ts.map +1 -0
- package/dist/components/CheckpointTimeline.d.ts +7 -0
- package/dist/components/CheckpointTimeline.d.ts.map +1 -0
- package/dist/components/CodeEditor.d.ts +3 -0
- package/dist/components/CodeEditor.d.ts.map +1 -0
- package/dist/components/CollabPanel.d.ts +28 -0
- package/dist/components/CollabPanel.d.ts.map +1 -0
- package/dist/components/CommandPalette/export-utils.d.ts +10 -0
- package/dist/components/CommandPalette/export-utils.d.ts.map +1 -0
- package/dist/components/CommandPalette/index.d.ts +2 -0
- package/dist/components/CommandPalette/index.d.ts.map +1 -0
- package/dist/components/CommandPalette.d.ts +3 -0
- package/dist/components/CommandPalette.d.ts.map +1 -0
- package/dist/components/ConfirmDialog.d.ts +2 -0
- package/dist/components/ConfirmDialog.d.ts.map +1 -0
- package/dist/components/ConfirmModal.d.ts +59 -0
- package/dist/components/ConfirmModal.d.ts.map +1 -0
- package/dist/components/ConnectionBanner.d.ts +13 -0
- package/dist/components/ConnectionBanner.d.ts.map +1 -0
- package/dist/components/ContextBar.d.ts +35 -0
- package/dist/components/ContextBar.d.ts.map +1 -0
- package/dist/components/ContextBreakdownModal.d.ts +7 -0
- package/dist/components/ContextBreakdownModal.d.ts.map +1 -0
- package/dist/components/ContextModePicker.d.ts +2 -0
- package/dist/components/ContextModePicker.d.ts.map +1 -0
- package/dist/components/CostChip.d.ts +12 -0
- package/dist/components/CostChip.d.ts.map +1 -0
- package/dist/components/DebugDashboard.d.ts +2 -0
- package/dist/components/DebugDashboard.d.ts.map +1 -0
- package/dist/components/DependencyGraph.d.ts +13 -0
- package/dist/components/DependencyGraph.d.ts.map +1 -0
- package/dist/components/DesignGalleryView.d.ts +14 -0
- package/dist/components/DesignGalleryView.d.ts.map +1 -0
- package/dist/components/DiffView.d.ts +33 -0
- package/dist/components/DiffView.d.ts.map +1 -0
- package/dist/components/ErrorBoundary.d.ts +40 -0
- package/dist/components/ErrorBoundary.d.ts.map +1 -0
- package/dist/components/FallbackEditor.d.ts +15 -0
- package/dist/components/FallbackEditor.d.ts.map +1 -0
- package/dist/components/FileExplorer.d.ts +2 -0
- package/dist/components/FileExplorer.d.ts.map +1 -0
- package/dist/components/FilePicker.d.ts +16 -0
- package/dist/components/FilePicker.d.ts.map +1 -0
- package/dist/components/FileReferenceChip.d.ts +8 -0
- package/dist/components/FileReferenceChip.d.ts.map +1 -0
- package/dist/components/FleetMonitor.d.ts +27 -0
- package/dist/components/FleetMonitor.d.ts.map +1 -0
- package/dist/components/FleetPanel.d.ts +17 -0
- package/dist/components/FleetPanel.d.ts.map +1 -0
- package/dist/components/GoalPanel.d.ts +7 -0
- package/dist/components/GoalPanel.d.ts.map +1 -0
- package/dist/components/InspectorPanel.d.ts +14 -0
- package/dist/components/InspectorPanel.d.ts.map +1 -0
- package/dist/components/KanbanView.d.ts +4 -0
- package/dist/components/KanbanView.d.ts.map +1 -0
- package/dist/components/MailboxDetailView.d.ts +8 -0
- package/dist/components/MailboxDetailView.d.ts.map +1 -0
- package/dist/components/MailboxPanel.d.ts +4 -0
- package/dist/components/MailboxPanel.d.ts.map +1 -0
- package/dist/components/MessageBubble/AttachmentGallery.d.ts +12 -0
- package/dist/components/MessageBubble/AttachmentGallery.d.ts.map +1 -0
- package/dist/components/MessageBubble/CopyButton.d.ts +6 -0
- package/dist/components/MessageBubble/CopyButton.d.ts.map +1 -0
- package/dist/components/MessageBubble/ErrorBody.d.ts +4 -0
- package/dist/components/MessageBubble/ErrorBody.d.ts.map +1 -0
- package/dist/components/MessageBubble/LazyMarkdown.d.ts +27 -0
- package/dist/components/MessageBubble/LazyMarkdown.d.ts.map +1 -0
- package/dist/components/MessageBubble/StreamingMarkdown.d.ts +24 -0
- package/dist/components/MessageBubble/StreamingMarkdown.d.ts.map +1 -0
- package/dist/components/MessageBubble/ToolInputView.d.ts +4 -0
- package/dist/components/MessageBubble/ToolInputView.d.ts.map +1 -0
- package/dist/components/MessageBubble/index.d.ts +9 -0
- package/dist/components/MessageBubble/index.d.ts.map +1 -0
- package/dist/components/MessageBubble/utils.d.ts +17 -0
- package/dist/components/MessageBubble/utils.d.ts.map +1 -0
- package/dist/components/MessageBubble.d.ts +2 -0
- package/dist/components/MessageBubble.d.ts.map +1 -0
- package/dist/components/ModePicker.d.ts +9 -0
- package/dist/components/ModePicker.d.ts.map +1 -0
- package/dist/components/ModelPickDialog.d.ts +22 -0
- package/dist/components/ModelPickDialog.d.ts.map +1 -0
- package/dist/components/ModelPicker.d.ts +18 -0
- package/dist/components/ModelPicker.d.ts.map +1 -0
- package/dist/components/MonacoDiffView.d.ts +13 -0
- package/dist/components/MonacoDiffView.d.ts.map +1 -0
- package/dist/components/NextStepsBar.d.ts +39 -0
- package/dist/components/NextStepsBar.d.ts.map +1 -0
- package/dist/components/OfficeMapCanvas/resolve.d.ts +48 -0
- package/dist/components/OfficeMapCanvas/resolve.d.ts.map +1 -0
- package/dist/components/OfficeMapCanvas/utils.d.ts +57 -0
- package/dist/components/OfficeMapCanvas/utils.d.ts.map +1 -0
- package/dist/components/OfficeMapCanvas.d.ts +10 -0
- package/dist/components/OfficeMapCanvas.d.ts.map +1 -0
- package/dist/components/OfficeMapPanel.d.ts +6 -0
- package/dist/components/OfficeMapPanel.d.ts.map +1 -0
- package/dist/components/OfficeMapSettingsPanel.d.ts +10 -0
- package/dist/components/OfficeMapSettingsPanel.d.ts.map +1 -0
- package/dist/components/PhasePanel.d.ts +42 -0
- package/dist/components/PhasePanel.d.ts.map +1 -0
- package/dist/components/PlanPanel.d.ts +14 -0
- package/dist/components/PlanPanel.d.ts.map +1 -0
- package/dist/components/ProcessMonitor.d.ts +7 -0
- package/dist/components/ProcessMonitor.d.ts.map +1 -0
- package/dist/components/PromptLibraryModal.d.ts +7 -0
- package/dist/components/PromptLibraryModal.d.ts.map +1 -0
- package/dist/components/QueuePanel.d.ts +11 -0
- package/dist/components/QueuePanel.d.ts.map +1 -0
- package/dist/components/QuickModelSwitcher.d.ts +10 -0
- package/dist/components/QuickModelSwitcher.d.ts.map +1 -0
- package/dist/components/QuickModelSwitcher.filter.d.ts +33 -0
- package/dist/components/QuickModelSwitcher.filter.d.ts.map +1 -0
- package/dist/components/RefinePanel.d.ts +24 -0
- package/dist/components/RefinePanel.d.ts.map +1 -0
- package/dist/components/RefreshDebugView.d.ts +32 -0
- package/dist/components/RefreshDebugView.d.ts.map +1 -0
- package/dist/components/SddActivityFeed.d.ts +11 -0
- package/dist/components/SddActivityFeed.d.ts.map +1 -0
- package/dist/components/SddBoardView.d.ts +9 -0
- package/dist/components/SddBoardView.d.ts.map +1 -0
- package/dist/components/SddDestroyDialog.d.ts +16 -0
- package/dist/components/SddDestroyDialog.d.ts.map +1 -0
- package/dist/components/SddFlowGraph.d.ts +23 -0
- package/dist/components/SddFlowGraph.d.ts.map +1 -0
- package/dist/components/SddKanbanView.d.ts +12 -0
- package/dist/components/SddKanbanView.d.ts.map +1 -0
- package/dist/components/SddTaskDrawer.d.ts +28 -0
- package/dist/components/SddTaskDrawer.d.ts.map +1 -0
- package/dist/components/SddWizard.d.ts +10 -0
- package/dist/components/SddWizard.d.ts.map +1 -0
- package/dist/components/SearchOverlay.d.ts +12 -0
- package/dist/components/SearchOverlay.d.ts.map +1 -0
- package/dist/components/SendButton.d.ts +2 -0
- package/dist/components/SendButton.d.ts.map +1 -0
- package/dist/components/SessionWatchPanel.d.ts +17 -0
- package/dist/components/SessionWatchPanel.d.ts.map +1 -0
- package/dist/components/SessionsDashboard.d.ts +3 -0
- package/dist/components/SessionsDashboard.d.ts.map +1 -0
- package/dist/components/SettingsPanel/BrainSection.d.ts +3 -0
- package/dist/components/SettingsPanel/BrainSection.d.ts.map +1 -0
- package/dist/components/SettingsPanel/ClearAllowlistDialog.d.ts +19 -0
- package/dist/components/SettingsPanel/ClearAllowlistDialog.d.ts.map +1 -0
- package/dist/components/SettingsPanel/MCPSection.d.ts +48 -0
- package/dist/components/SettingsPanel/MCPSection.d.ts.map +1 -0
- package/dist/components/SettingsPanel/ModelSection.d.ts +31 -0
- package/dist/components/SettingsPanel/ModelSection.d.ts.map +1 -0
- package/dist/components/SettingsPanel/OAuthLoginSection.d.ts +14 -0
- package/dist/components/SettingsPanel/OAuthLoginSection.d.ts.map +1 -0
- package/dist/components/SettingsPanel/PreferenceControls.d.ts +23 -0
- package/dist/components/SettingsPanel/PreferenceControls.d.ts.map +1 -0
- package/dist/components/SettingsPanel/PreferenceToggle.d.ts +25 -0
- package/dist/components/SettingsPanel/PreferenceToggle.d.ts.map +1 -0
- package/dist/components/SettingsPanel/ProviderModelsPanel.d.ts +46 -0
- package/dist/components/SettingsPanel/ProviderModelsPanel.d.ts.map +1 -0
- package/dist/components/SettingsPanel/ProviderModelsPanel.filter.d.ts +110 -0
- package/dist/components/SettingsPanel/ProviderModelsPanel.filter.d.ts.map +1 -0
- package/dist/components/SettingsPanel/ProviderSection.d.ts +63 -0
- package/dist/components/SettingsPanel/ProviderSection.d.ts.map +1 -0
- package/dist/components/SettingsPanel/RoutingSection.d.ts +6 -0
- package/dist/components/SettingsPanel/RoutingSection.d.ts.map +1 -0
- package/dist/components/SettingsPanel/ShadowSection.d.ts +3 -0
- package/dist/components/SettingsPanel/ShadowSection.d.ts.map +1 -0
- package/dist/components/SettingsPanel/ToolsSection.d.ts +12 -0
- package/dist/components/SettingsPanel/ToolsSection.d.ts.map +1 -0
- package/dist/components/SettingsPanel/index.d.ts +2 -0
- package/dist/components/SettingsPanel/index.d.ts.map +1 -0
- package/dist/components/SettingsPanel/local-presets.d.ts +31 -0
- package/dist/components/SettingsPanel/local-presets.d.ts.map +1 -0
- package/dist/components/SettingsPanel/official-servers.d.ts +30 -0
- package/dist/components/SettingsPanel/official-servers.d.ts.map +1 -0
- package/dist/components/SettingsPanel/settings-panel-reducers.d.ts +40 -0
- package/dist/components/SettingsPanel/settings-panel-reducers.d.ts.map +1 -0
- package/dist/components/SettingsPanel/undo-send-decision.d.ts +42 -0
- package/dist/components/SettingsPanel/undo-send-decision.d.ts.map +1 -0
- package/dist/components/SettingsPanel.d.ts +3 -0
- package/dist/components/SettingsPanel.d.ts.map +1 -0
- package/dist/components/SetupScreen.d.ts +2 -0
- package/dist/components/SetupScreen.d.ts.map +1 -0
- package/dist/components/ShortcutsOverlay.d.ts +2 -0
- package/dist/components/ShortcutsOverlay.d.ts.map +1 -0
- package/dist/components/SideEffectTimeline.d.ts +11 -0
- package/dist/components/SideEffectTimeline.d.ts.map +1 -0
- package/dist/components/SidePanel/AgentsPanel.d.ts +8 -0
- package/dist/components/SidePanel/AgentsPanel.d.ts.map +1 -0
- package/dist/components/SidePanel/ChangesPanel.d.ts +8 -0
- package/dist/components/SidePanel/ChangesPanel.d.ts.map +1 -0
- package/dist/components/SidePanel/DesignStudioPanel.d.ts +12 -0
- package/dist/components/SidePanel/DesignStudioPanel.d.ts.map +1 -0
- package/dist/components/SidePanel/HistoryPanel.d.ts +7 -0
- package/dist/components/SidePanel/HistoryPanel.d.ts.map +1 -0
- package/dist/components/SidePanel/SessionList.d.ts +24 -0
- package/dist/components/SidePanel/SessionList.d.ts.map +1 -0
- package/dist/components/SidePanel/SessionPanel.d.ts +10 -0
- package/dist/components/SidePanel/SessionPanel.d.ts.map +1 -0
- package/dist/components/SidePanel/SkillsList.d.ts +8 -0
- package/dist/components/SidePanel/SkillsList.d.ts.map +1 -0
- package/dist/components/SidePanel/WorktreesPanel.d.ts +8 -0
- package/dist/components/SidePanel/WorktreesPanel.d.ts.map +1 -0
- package/dist/components/SidePanel/index.d.ts +11 -0
- package/dist/components/SidePanel/index.d.ts.map +1 -0
- package/dist/components/SkillDetailView.d.ts +8 -0
- package/dist/components/SkillDetailView.d.ts.map +1 -0
- package/dist/components/SpecsView.d.ts +9 -0
- package/dist/components/SpecsView.d.ts.map +1 -0
- package/dist/components/TaskBoard.d.ts +20 -0
- package/dist/components/TaskBoard.d.ts.map +1 -0
- package/dist/components/TaskCard.d.ts +43 -0
- package/dist/components/TaskCard.d.ts.map +1 -0
- package/dist/components/TasksPanel.d.ts +14 -0
- package/dist/components/TasksPanel.d.ts.map +1 -0
- package/dist/components/TerminalPanel.d.ts +12 -0
- package/dist/components/TerminalPanel.d.ts.map +1 -0
- package/dist/components/ThemeProvider.d.ts +15 -0
- package/dist/components/ThemeProvider.d.ts.map +1 -0
- package/dist/components/Toaster.d.ts +33 -0
- package/dist/components/Toaster.d.ts.map +1 -0
- package/dist/components/TodosPanel.d.ts +14 -0
- package/dist/components/TodosPanel.d.ts.map +1 -0
- package/dist/components/ToolGroup.d.ts +18 -0
- package/dist/components/ToolGroup.d.ts.map +1 -0
- package/dist/components/ToolResult.d.ts +33 -0
- package/dist/components/ToolResult.d.ts.map +1 -0
- package/dist/components/WatchMessageBubble.d.ts +30 -0
- package/dist/components/WatchMessageBubble.d.ts.map +1 -0
- package/dist/components/WelcomeScreen.d.ts +9 -0
- package/dist/components/WelcomeScreen.d.ts.map +1 -0
- package/dist/components/WorkDashboard.d.ts +11 -0
- package/dist/components/WorkDashboard.d.ts.map +1 -0
- package/dist/components/WorkspaceDock.d.ts +16 -0
- package/dist/components/WorkspaceDock.d.ts.map +1 -0
- package/dist/components/WorktreeGraph.d.ts +21 -0
- package/dist/components/WorktreeGraph.d.ts.map +1 -0
- package/dist/components/WorktreeLanes.d.ts +11 -0
- package/dist/components/WorktreeLanes.d.ts.map +1 -0
- package/dist/components/WorktreeOrphans.d.ts +9 -0
- package/dist/components/WorktreeOrphans.d.ts.map +1 -0
- package/dist/components/activity-bar/index.d.ts +14 -0
- package/dist/components/activity-bar/index.d.ts.map +1 -0
- package/dist/components/activity-bar/nav.d.ts +17 -0
- package/dist/components/activity-bar/nav.d.ts.map +1 -0
- package/dist/components/dashboard-primitives.d.ts +22 -0
- package/dist/components/dashboard-primitives.d.ts.map +1 -0
- package/dist/components/index.d.ts +32 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/monaco-theme.d.ts +6 -0
- package/dist/components/monaco-theme.d.ts.map +1 -0
- package/dist/components/toaster-helpers.d.ts +34 -0
- package/dist/components/toaster-helpers.d.ts.map +1 -0
- package/dist/components/ui/badge.d.ts +10 -0
- package/dist/components/ui/badge.d.ts.map +1 -0
- package/dist/components/ui/button.d.ts +12 -0
- package/dist/components/ui/button.d.ts.map +1 -0
- package/dist/components/ui/concurrency-gauge.d.ts +18 -0
- package/dist/components/ui/concurrency-gauge.d.ts.map +1 -0
- package/dist/components/ui/dialog.d.ts +29 -0
- package/dist/components/ui/dialog.d.ts.map +1 -0
- package/dist/components/ui/dropdown-menu.d.ts +28 -0
- package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
- package/dist/components/ui/event-timeline.d.ts +15 -0
- package/dist/components/ui/event-timeline.d.ts.map +1 -0
- package/dist/components/ui/index.d.ts +11 -0
- package/dist/components/ui/index.d.ts.map +1 -0
- package/dist/components/ui/input.d.ts +6 -0
- package/dist/components/ui/input.d.ts.map +1 -0
- package/dist/components/ui/scroll-area.d.ts +6 -0
- package/dist/components/ui/scroll-area.d.ts.map +1 -0
- package/dist/components/ui/sheet.d.ts +32 -0
- package/dist/components/ui/sheet.d.ts.map +1 -0
- package/dist/components/ui/sparkline.d.ts +16 -0
- package/dist/components/ui/sparkline.d.ts.map +1 -0
- package/dist/components/ui/tabs.d.ts +8 -0
- package/dist/components/ui/tabs.d.ts.map +1 -0
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/use-ws-handlers.d.ts +24 -0
- package/dist/hooks/use-ws-handlers.d.ts.map +1 -0
- package/dist/hooks/useGitInfo.d.ts +4 -0
- package/dist/hooks/useGitInfo.d.ts.map +1 -0
- package/dist/hooks/useProviderModels.d.ts +15 -0
- package/dist/hooks/useProviderModels.d.ts.map +1 -0
- package/dist/hooks/useWebSocket.d.ts +85 -0
- package/dist/hooks/useWebSocket.d.ts.map +1 -0
- package/dist/hooks/ws-handlers/chat-handlers.d.ts +21 -0
- package/dist/hooks/ws-handlers/chat-handlers.d.ts.map +1 -0
- package/dist/hooks/ws-handlers/coordinator-handlers.d.ts +3 -0
- package/dist/hooks/ws-handlers/coordinator-handlers.d.ts.map +1 -0
- package/dist/hooks/ws-handlers/files-mailbox-handlers.d.ts +17 -0
- package/dist/hooks/ws-handlers/files-mailbox-handlers.d.ts.map +1 -0
- package/dist/hooks/ws-handlers/fleet-handlers.d.ts +13 -0
- package/dist/hooks/ws-handlers/fleet-handlers.d.ts.map +1 -0
- package/dist/hooks/ws-handlers/misc-handlers.d.ts +21 -0
- package/dist/hooks/ws-handlers/misc-handlers.d.ts.map +1 -0
- package/dist/hooks/ws-handlers/session-handlers.d.ts +34 -0
- package/dist/hooks/ws-handlers/session-handlers.d.ts.map +1 -0
- package/dist/hooks/ws-handlers.d.ts +24 -0
- package/dist/hooks/ws-handlers.d.ts.map +1 -0
- package/dist/i18n/index.d.ts +12 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/languages.d.ts +40 -0
- package/dist/i18n/languages.d.ts.map +1 -0
- package/dist/index.css +2 -2
- package/dist/index.css.map +7 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.html +16 -16
- package/dist/index.js +21624 -19624
- package/dist/index.js.map +7 -1
- package/dist/lib/accent-colors.d.ts +136 -0
- package/dist/lib/accent-colors.d.ts.map +1 -0
- package/dist/lib/agent-status.d.ts +41 -0
- package/dist/lib/agent-status.d.ts.map +1 -0
- package/dist/lib/analytics.d.ts +38 -0
- package/dist/lib/analytics.d.ts.map +1 -0
- package/dist/lib/chime.d.ts +20 -0
- package/dist/lib/chime.d.ts.map +1 -0
- package/dist/lib/color.d.ts +15 -0
- package/dist/lib/color.d.ts.map +1 -0
- package/dist/lib/completion.d.ts +27 -0
- package/dist/lib/completion.d.ts.map +1 -0
- package/dist/lib/core-browser-shim.d.ts +22 -0
- package/dist/lib/core-browser-shim.d.ts.map +1 -0
- package/dist/lib/default-prompt-pools.d.ts +27 -0
- package/dist/lib/default-prompt-pools.d.ts.map +1 -0
- package/dist/lib/desktop-host.d.ts +24 -0
- package/dist/lib/desktop-host.d.ts.map +1 -0
- package/dist/lib/desktop-shell.d.ts +3 -0
- package/dist/lib/desktop-shell.d.ts.map +1 -0
- package/dist/lib/favicon.d.ts +21 -0
- package/dist/lib/favicon.d.ts.map +1 -0
- package/dist/lib/file-icons.d.ts +10 -0
- package/dist/lib/file-icons.d.ts.map +1 -0
- package/dist/lib/goal.d.ts +32 -0
- package/dist/lib/goal.d.ts.map +1 -0
- package/dist/lib/index.d.ts +4 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/model-matrix-routes.d.ts +203 -0
- package/dist/lib/model-matrix-routes.d.ts.map +1 -0
- package/dist/lib/notify.d.ts +15 -0
- package/dist/lib/notify.d.ts.map +1 -0
- package/dist/lib/sdd-theme.d.ts +52 -0
- package/dist/lib/sdd-theme.d.ts.map +1 -0
- package/dist/lib/stream-coalescer.d.ts +46 -0
- package/dist/lib/stream-coalescer.d.ts.map +1 -0
- package/dist/lib/terminal-dock.d.ts +6 -0
- package/dist/lib/terminal-dock.d.ts.map +1 -0
- package/dist/lib/tool-icon.d.ts +19 -0
- package/dist/lib/tool-icon.d.ts.map +1 -0
- package/dist/lib/tool-summary.d.ts +2 -0
- package/dist/lib/tool-summary.d.ts.map +1 -0
- package/dist/lib/utils.d.ts +10 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/view-navigation.d.ts +15 -0
- package/dist/lib/view-navigation.d.ts.map +1 -0
- package/dist/lib/ws-client-helpers.d.ts +46 -0
- package/dist/lib/ws-client-helpers.d.ts.map +1 -0
- package/dist/lib/ws-client-utils.d.ts +87 -0
- package/dist/lib/ws-client-utils.d.ts.map +1 -0
- package/dist/lib/ws-client.d.ts +239 -0
- package/dist/lib/ws-client.d.ts.map +1 -0
- package/dist/main.d.ts +8 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/stores/auto-submit-streak.d.ts +40 -0
- package/dist/stores/auto-submit-streak.d.ts.map +1 -0
- package/dist/stores/autophase-store.d.ts +50 -0
- package/dist/stores/autophase-store.d.ts.map +1 -0
- package/dist/stores/chat-store.d.ts +137 -0
- package/dist/stores/chat-store.d.ts.map +1 -0
- package/dist/stores/config-store.d.ts +67 -0
- package/dist/stores/config-store.d.ts.map +1 -0
- package/dist/stores/coordinator-monitor-store.d.ts +133 -0
- package/dist/stores/coordinator-monitor-store.d.ts.map +1 -0
- package/dist/stores/file-reference-store.d.ts +36 -0
- package/dist/stores/file-reference-store.d.ts.map +1 -0
- package/dist/stores/file-store.d.ts +40 -0
- package/dist/stores/file-store.d.ts.map +1 -0
- package/dist/stores/fleet-store.d.ts +29 -0
- package/dist/stores/fleet-store.d.ts.map +1 -0
- package/dist/stores/git-changes-store.d.ts +38 -0
- package/dist/stores/git-changes-store.d.ts.map +1 -0
- package/dist/stores/git-info-store.d.ts +18 -0
- package/dist/stores/git-info-store.d.ts.map +1 -0
- package/dist/stores/goal-store.d.ts +12 -0
- package/dist/stores/goal-store.d.ts.map +1 -0
- package/dist/stores/history-store.d.ts +15 -0
- package/dist/stores/history-store.d.ts.map +1 -0
- package/dist/stores/index.d.ts +36 -0
- package/dist/stores/index.d.ts.map +1 -0
- package/dist/stores/kanban-store.d.ts +22 -0
- package/dist/stores/kanban-store.d.ts.map +1 -0
- package/dist/stores/local-prefs.d.ts +135 -0
- package/dist/stores/local-prefs.d.ts.map +1 -0
- package/dist/stores/mailbox-store.d.ts +63 -0
- package/dist/stores/mailbox-store.d.ts.map +1 -0
- package/dist/stores/monitor-store.d.ts +116 -0
- package/dist/stores/monitor-store.d.ts.map +1 -0
- package/dist/stores/office-map-store.d.ts +47 -0
- package/dist/stores/office-map-store.d.ts.map +1 -0
- package/dist/stores/sdd-board-store.d.ts +88 -0
- package/dist/stores/sdd-board-store.d.ts.map +1 -0
- package/dist/stores/sdd-wizard-store.d.ts +64 -0
- package/dist/stores/sdd-wizard-store.d.ts.map +1 -0
- package/dist/stores/session-store.d.ts +125 -0
- package/dist/stores/session-store.d.ts.map +1 -0
- package/dist/stores/side-effect-store.d.ts +18 -0
- package/dist/stores/side-effect-store.d.ts.map +1 -0
- package/dist/stores/specs-store.d.ts +67 -0
- package/dist/stores/specs-store.d.ts.map +1 -0
- package/dist/stores/types.d.ts +254 -0
- package/dist/stores/types.d.ts.map +1 -0
- package/dist/stores/ui-store.d.ts +307 -0
- package/dist/stores/ui-store.d.ts.map +1 -0
- package/dist/stores/viz-store.d.ts +126 -0
- package/dist/stores/viz-store.d.ts.map +1 -0
- package/dist/stores/worktree-store.d.ts +47 -0
- package/dist/stores/worktree-store.d.ts.map +1 -0
- package/dist/types.d.ts +321 -119
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +1 -1
- package/dist/types.js.map +7 -1
- package/package.json +13 -14
- package/dist/assets/AutoPhaseView-D053zOhN.js +0 -1
- package/dist/assets/DebugDashboard-DBPKvghW.js +0 -1
- package/dist/assets/KanbanView-DWBGErwm.js +0 -1
- package/dist/assets/MailboxDetailView-CCtq-c8u.js +0 -1
- package/dist/assets/OfficeMapPanel-BBKsytG0.js +0 -4
- package/dist/assets/SddBoardView-Q-k1UjLv.js +0 -2
- package/dist/assets/SddFlowGraph-BaWwH9Zc.js +0 -1
- package/dist/assets/SddWizard-C4wdyhYe.js +0 -1
- package/dist/assets/SessionsDashboard-CveBdrQJ.js +0 -1
- package/dist/assets/SkillDetailView-B4U0AtHj.js +0 -2
- package/dist/assets/SpecsView-QssXs9kF.js +0 -1
- package/dist/assets/TerminalPanel-CSDEzJNZ.js +0 -1
- package/dist/assets/activity-3lpGdUIy.js +0 -5
- package/dist/assets/activity-Bi6wI_Cg.js +0 -5
- package/dist/assets/activity-CSPSX--m.js +0 -5
- package/dist/assets/activity-Cv0CmTyM.js +0 -5
- package/dist/assets/activity-Doy5Yots.js +0 -5
- package/dist/assets/chat--Zry3Atx.js +0 -1
- package/dist/assets/chat-0DeGMNFQ.js +0 -1
- package/dist/assets/chat-BErfSQjE.js +0 -1
- package/dist/assets/chat-CX5cjaC-.js +0 -1
- package/dist/assets/chat-CibJIps5.js +0 -1
- package/dist/assets/chat-Dr5SJikx.js +0 -1
- package/dist/assets/chat-Siz8aWTB.js +0 -1
- package/dist/assets/chat-store-De7J1E26.js +0 -5
- package/dist/assets/commandPalette-2M1hYRuH.js +0 -1
- package/dist/assets/commandPalette-BE_ljQwl.js +0 -1
- package/dist/assets/commandPalette-BYf22WAi.js +0 -1
- package/dist/assets/commandPalette-BZhacjvy.js +0 -1
- package/dist/assets/commandPalette-CTE9ITWg.js +0 -1
- package/dist/assets/commandPalette-RxWSjQIg.js +0 -1
- package/dist/assets/common-B28qhvZh.js +0 -1
- package/dist/assets/common-CeTsF3jX.js +0 -1
- package/dist/assets/index-BqAVsSCe.js +0 -154
- package/dist/assets/index-DTFjO9oF.css +0 -1
- package/dist/assets/local-prefs-C1YdbI5g.js +0 -1
- package/dist/assets/markdown-D0X23O-i.js +0 -44
- package/dist/assets/settings-BVvx94WK.js +0 -1
- package/dist/assets/settings-CQ4x-iFD.js +0 -1
- package/dist/assets/settings-CmHCQRVI.js +0 -1
- package/dist/assets/settings-DgGu17XI.js +0 -1
- package/dist/assets/settings-Os0ifjjB.js +0 -1
- package/dist/assets/settings-TqprB9wO.js +0 -1
- package/dist/assets/settings-UGa_oSYC.js +0 -1
- package/dist/assets/ui-store-FTgDlcX2.js +0 -1
- package/dist/assets/utils-CU_o9ioU.js +0 -1
- package/dist/assets/ws-client-lDxBz-7w.js +0 -1
package/dist/App.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../src/App.tsx"],"names":[],"mappings":"AA0wCA,wBAAgB,GAAG,gCAQlB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{m as t,p as n}from"./markdown-D0X23O-i.js";import{Fr as r,Lr as i,Wr as a,fi as o,lt as s,nr as c,or as l,pt as u,rt as d,si as f,sn as p}from"./vendor-CyLvG8N0.js";import"./i18n-CkkVJCs9.js";import{t as m}from"./ws-client-lDxBz-7w.js";import{z as h}from"./index-BqAVsSCe.js";var g=e(t(),1),_=n();function v(e){let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60)return`${n}m ${t%60}s`;let r=Math.floor(n/60);return r<24?`${r}h ${n%60}m`:`${Math.floor(r/24)}d`}function y(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e)}function b(e){return e<.01?`$${e.toFixed(4)}`:`$${e.toFixed(2)}`}function x(e){return new Date(e).toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}function S(e){return e.includes(`error`)||e.includes(`fail`)?`text-destructive`:e.includes(`warn`)?`text-warning`:e.includes(`success`)||e.includes(`complete`)?`text-success`:`text-muted-foreground`}function C({icon:e,label:t,value:n,sub:r,color:i=`text-muted-foreground`}){return(0,_.jsxs)(`div`,{className:`flex items-start gap-3 rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:[(0,_.jsx)(`div`,{className:`mt-0.5 ${i}`,children:e}),(0,_.jsxs)(`div`,{className:`min-w-0`,children:[(0,_.jsx)(`div`,{className:`text-2xl font-semibold tabular-nums text-foreground`,children:n}),(0,_.jsx)(`div`,{className:`mt-0.5 text-xs text-muted-foreground`,children:t}),r?(0,_.jsx)(`div`,{className:`mt-1 text-xs text-muted-foreground/70`,children:r}):null]})]})}function w(){let{t:e}=o(),[t,n]=(0,g.useState)(null),[w,T]=(0,g.useState)([]),[E,D]=(0,g.useState)([]),[O,k]=(0,g.useState)(null),[A,j]=(0,g.useState)(!0),[M,N]=(0,g.useState)(!1),P=(0,g.useRef)(null),F=(0,g.useCallback)(async()=>{try{let e=await fetch(`/api/analytics/summary`);e.ok&&n(await e.json())}catch{}},[]),I=(0,g.useCallback)(async()=>{try{let e=await fetch(`/api/analytics?limit=50`);e.ok&&T((await e.json()).events)}catch{}},[]),L=(0,g.useCallback)(async()=>{try{let e=await fetch(`/api/sessions`);e.ok&&D(await e.json())}catch{}},[]),R=(0,g.useCallback)(async()=>{if(!M){N(!0);try{let e=m(h.getState().wsUrl);P.current=e;let t=e.on(`stats.get`,e=>{let n=e.payload;k(n),N(!1),t()});e.getStats(),setTimeout(()=>{N(!1),t()},8e3)}catch{N(!1)}}},[M]);(0,g.useEffect)(()=>{let e=()=>{Promise.all([F(),I(),L(),R()]).finally(()=>j(!1))};e();let t=setInterval(e,1e4);return()=>clearInterval(t)},[F,I,L,R]);let{totalAgents:z,activeAgents:B,totalToolCalls:V,totalIterations:H}=(0,g.useMemo)(()=>{let e=0,t=0,n=0,r=0;for(let i of E)for(let a of i.agents)e++,a.status===`running`&&t++,n+=a.toolCalls,r+=a.iterations;return{totalAgents:e,activeAgents:t,totalToolCalls:n,totalIterations:r}},[E]),U=(0,g.useMemo)(()=>t?Object.entries(t.categoryBreakdown).sort((e,t)=>t[1]-e[1]).slice(0,8):[],[t]),W=(0,g.useMemo)(()=>t?Object.entries(t.eventBreakdown).sort((e,t)=>t[1]-e[1]).slice(0,10):[],[t]),G=(0,g.useMemo)(()=>{if(!t)return 0;let e=0;for(let[n,r]of Object.entries(t.eventBreakdown))n.toLowerCase().includes(`error`)&&(e+=r);return e},[t]),K=(0,g.useMemo)(()=>{if(!t)return 0;let e=0;for(let[n,r]of Object.entries(t.eventBreakdown))n.toLowerCase().includes(`warn`)&&(e+=r);return e},[t]),q=(0,g.useMemo)(()=>[...w].reverse(),[w]);return A?(0,_.jsx)(`div`,{className:`flex h-full min-h-0 items-center justify-center bg-[hsl(var(--surface-2)/0.45)] p-4`,children:(0,_.jsxs)(`div`,{className:`ws-surface flex items-center gap-2 rounded-xl px-4 py-3 text-sm text-muted-foreground`,children:[(0,_.jsx)(a,{className:`h-4 w-4 animate-spin text-primary`}),e(`activity:analytics.loading`)]})}):(0,_.jsx)(`div`,{className:`h-full min-h-0 min-w-0 overflow-y-auto bg-[hsl(var(--surface-2)/0.45)] p-4 sm:p-6`,children:(0,_.jsxs)(`div`,{className:`mx-auto flex w-full max-w-7xl flex-col gap-5`,children:[(0,_.jsx)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:(0,_.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between`,children:[(0,_.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,_.jsx)(f,{className:`h-4 w-4 text-primary`}),(0,_.jsx)(`h1`,{className:`truncate text-base font-semibold`,children:e(`activity:analytics.heading`)})]}),(0,_.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e(`activity:analytics.autoRefresh`)})]})}),(0,_.jsxs)(`div`,{className:`min-w-0 space-y-5`,children:[(0,_.jsxs)(`div`,{className:`grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-3`,children:[(0,_.jsx)(C,{icon:(0,_.jsx)(r,{className:`h-4 w-4`}),label:e(`activity:analytics.liveSessions`),value:E.length,color:`text-primary`}),(0,_.jsx)(C,{icon:(0,_.jsx)(d,{className:`h-4 w-4`}),label:e(`activity:analytics.agents`),value:`${B}/${z}`,sub:B>0?e(`activity:analytics.agentsActive`,{count:B}):void 0,color:`text-success`}),(0,_.jsx)(C,{icon:(0,_.jsx)(p,{className:`h-4 w-4`}),label:e(`activity:analytics.totalEvents`),value:t?.totalEvents??0,sub:e(`activity:analytics.categoriesSub`,{count:t?.uniqueCategories??0}),color:`text-warning`}),(0,_.jsx)(C,{icon:(0,_.jsx)(u,{className:`h-4 w-4`}),label:e(`activity:analytics.toolCalls`),value:V,sub:e(`activity:analytics.iterationsSub`,{count:H}),color:`text-success`}),(0,_.jsx)(C,{icon:(0,_.jsx)(c,{className:`h-4 w-4`}),label:e(`activity:analytics.sessionCost`),value:O?b(O.cost):`—`,sub:O?e(`activity:analytics.tokensSub`,{input:y(O.usage.input),output:y(O.usage.output)}):void 0,color:`text-primary`}),(0,_.jsx)(C,{icon:(0,_.jsx)(l,{className:`h-4 w-4`}),label:e(`activity:analytics.sessionDuration`),value:O?v(O.elapsedMs):`—`,sub:O?e(`activity:analytics.messagesSub`,{count:O.messages}):void 0,color:`text-muted-foreground`})]}),(0,_.jsxs)(`div`,{className:`grid grid-cols-1 lg:grid-cols-2 gap-4`,children:[(0,_.jsxs)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:[(0,_.jsxs)(`h3`,{className:`mb-3 flex items-center gap-2 text-xs font-semibold uppercase text-muted-foreground`,children:[(0,_.jsx)(s,{className:`h-3.5 w-3.5 text-primary`}),e(`activity:analytics.eventsByCategory`)]}),U.length===0?(0,_.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`activity:analytics.noEvents`)}):(0,_.jsx)(`div`,{className:`space-y-1.5`,children:U.map(([e,t])=>{let n=U[0]?.[1]??1,r=Math.round(t/n*100);return(0,_.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,7rem)_minmax(0,1fr)_2.5rem] items-center gap-2 text-xs`,children:[(0,_.jsx)(`span`,{className:`min-w-0 truncate text-foreground`,children:e}),(0,_.jsx)(`div`,{className:`h-4 overflow-hidden rounded-full bg-muted`,children:(0,_.jsx)(`div`,{className:`h-full rounded-full bg-primary/70 transition-all`,style:{width:`${Math.max(r,4)}%`}})}),(0,_.jsx)(`span`,{className:`text-right tabular-nums text-muted-foreground`,children:t})]},e)})})]}),(0,_.jsxs)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:[(0,_.jsxs)(`h3`,{className:`mb-3 flex items-center gap-2 text-xs font-semibold uppercase text-muted-foreground`,children:[(0,_.jsx)(f,{className:`h-3.5 w-3.5 text-warning`}),e(`activity:analytics.topEvents`)]}),W.length===0?(0,_.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`activity:analytics.noEvents`)}):(0,_.jsx)(`div`,{className:`space-y-1.5`,children:W.map(([e,t])=>{let n=W[0]?.[1]??1,r=Math.round(t/n*100);return(0,_.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,9rem)_minmax(0,1fr)_2.5rem] items-center gap-2 text-xs`,children:[(0,_.jsx)(`span`,{className:`min-w-0 truncate ${S(e)}`,children:e}),(0,_.jsx)(`div`,{className:`h-4 overflow-hidden rounded-full bg-muted`,children:(0,_.jsx)(`div`,{className:`h-full rounded-full bg-warning/70 transition-all`,style:{width:`${Math.max(r,4)}%`}})}),(0,_.jsx)(`span`,{className:`text-right tabular-nums text-muted-foreground`,children:t})]},e)})})]})]}),(0,_.jsxs)(`div`,{className:`grid grid-cols-1 lg:grid-cols-2 gap-4`,children:[(0,_.jsxs)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:[(0,_.jsxs)(`h3`,{className:`mb-3 flex items-center gap-2 text-xs font-semibold uppercase text-muted-foreground`,children:[(0,_.jsx)(c,{className:`h-3.5 w-3.5 text-primary`}),e(`activity:analytics.activeSessionUsage`)]}),O?(0,_.jsxs)(`div`,{className:`grid grid-cols-2 gap-3 text-xs`,children:[(0,_.jsxs)(`div`,{className:`min-w-0 rounded-lg border border-border/70 bg-background/50 px-3 py-2`,children:[(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.provider`)}),(0,_.jsx)(`p`,{className:`mt-0.5 truncate font-mono text-foreground`,children:O.provider})]}),(0,_.jsxs)(`div`,{className:`min-w-0 rounded-lg border border-border/70 bg-background/50 px-3 py-2`,children:[(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.model`)}),(0,_.jsx)(`p`,{className:`mt-0.5 truncate font-mono text-foreground`,children:O.model})]}),(0,_.jsxs)(`div`,{className:`rounded-lg border border-border/70 bg-background/50 px-3 py-2`,children:[(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.inputTokens`)}),(0,_.jsx)(`p`,{className:`mt-0.5 tabular-nums text-foreground`,children:y(O.usage.input)})]}),(0,_.jsxs)(`div`,{className:`rounded-lg border border-border/70 bg-background/50 px-3 py-2`,children:[(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.outputTokens`)}),(0,_.jsx)(`p`,{className:`mt-0.5 tabular-nums text-foreground`,children:y(O.usage.output)})]}),(0,_.jsxs)(`div`,{className:`rounded-lg border border-border/70 bg-background/50 px-3 py-2`,children:[(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.cacheRatio`)}),(0,_.jsxs)(`p`,{className:`mt-0.5 tabular-nums text-foreground`,children:[(O.cache.ratio*100).toFixed(1),`%`]})]}),(0,_.jsxs)(`div`,{className:`rounded-lg border border-border/70 bg-background/50 px-3 py-2`,children:[(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.filesRead`)}),(0,_.jsx)(`p`,{className:`mt-0.5 tabular-nums text-foreground`,children:O.readFiles})]})]}):(0,_.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`activity:analytics.noSession`)})]}),(0,_.jsxs)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:[(0,_.jsxs)(`h3`,{className:`mb-3 flex items-center gap-2 text-xs font-semibold uppercase text-muted-foreground`,children:[(0,_.jsx)(i,{className:`h-3.5 w-3.5 text-warning`}),e(`activity:analytics.healthErrors`)]}),(0,_.jsx)(`div`,{className:`space-y-2 text-xs`,children:t?(0,_.jsxs)(_.Fragment,{children:[(0,_.jsxs)(`div`,{className:`flex justify-between`,children:[(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.errorEvents`)}),(0,_.jsx)(`span`,{className:`tabular-nums text-destructive`,children:G})]}),(0,_.jsxs)(`div`,{className:`flex justify-between`,children:[(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.warningEvents`)}),(0,_.jsx)(`span`,{className:`tabular-nums text-warning`,children:K})]}),(0,_.jsxs)(`div`,{className:`flex justify-between`,children:[(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.cacheHitRate`)}),(0,_.jsx)(`span`,{className:`tabular-nums text-success`,children:O?`${(O.cache.ratio*100).toFixed(1)}%`:`—`})]}),(0,_.jsxs)(`div`,{className:`flex justify-between`,children:[(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.totalCategories`)}),(0,_.jsx)(`span`,{className:`tabular-nums text-foreground`,children:t.uniqueCategories})]})]}):(0,_.jsx)(`p`,{className:`text-muted-foreground`,children:e(`activity:analytics.waitingData`)})})]})]}),(0,_.jsxs)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:[(0,_.jsxs)(`h3`,{className:`mb-3 flex items-center gap-2 text-xs font-semibold uppercase text-muted-foreground`,children:[(0,_.jsx)(r,{className:`h-3.5 w-3.5 text-primary`}),e(`activity:analytics.recentEvents`)]}),w.length===0?(0,_.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`activity:analytics.noRecentEvents`)}):(0,_.jsx)(`div`,{className:`max-h-64 space-y-1 overflow-y-auto`,children:q.map((e,t)=>(0,_.jsxs)(`div`,{className:`grid grid-cols-[4rem_minmax(0,7rem)_minmax(0,6rem)_minmax(0,1fr)] items-start gap-2 rounded px-2 py-1 text-xs hover:bg-muted/60`,children:[(0,_.jsx)(`span`,{className:`tabular-nums text-muted-foreground/70`,children:x(e.timestamp)}),(0,_.jsx)(`span`,{className:`min-w-0 truncate ${S(e.event)}`,children:e.event}),(0,_.jsx)(`span`,{className:`min-w-0 truncate text-muted-foreground`,children:e.category}),(0,_.jsx)(`span`,{className:`min-w-0 truncate text-foreground/80`,children:e.label??e.sessionId??``})]},`${e.timestamp}-${t}`))})]})]})]})})}export{w as AnalyticsDashboard};
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{m as t,p as n}from"./markdown-BRAejDWd.js";import{Kr as r,Lr as i,cr as a,ir as o,li as s,lt as c,mi as l,pt as u,rt as d,sn as f,zr as p}from"./vendor-C9iFsXuW.js";import"./i18n-ClFSbktB.js";import{t as m}from"./ws-client-WVS5hdJj.js";import{J as h}from"./index-DGwt4pL3.js";var g=e(t(),1),_=n();function v(e){let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60)return`${n}m ${t%60}s`;let r=Math.floor(n/60);return r<24?`${r}h ${n%60}m`:`${Math.floor(r/24)}d`}function y(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e)}function b(e){return e<.01?`$${e.toFixed(4)}`:`$${e.toFixed(2)}`}function x(e){return new Date(e).toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}function S(e){return e.includes(`error`)||e.includes(`fail`)?`text-destructive`:e.includes(`warn`)?`text-warning`:e.includes(`success`)||e.includes(`complete`)?`text-success`:`text-muted-foreground`}function C({icon:e,label:t,value:n,sub:r,color:i=`text-muted-foreground`}){return(0,_.jsxs)(`div`,{className:`flex items-start gap-3 rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:[(0,_.jsx)(`div`,{className:`mt-0.5 ${i}`,children:e}),(0,_.jsxs)(`div`,{className:`min-w-0`,children:[(0,_.jsx)(`div`,{className:`text-2xl font-semibold tabular-nums text-foreground`,children:n}),(0,_.jsx)(`div`,{className:`mt-0.5 text-xs text-muted-foreground`,children:t}),r?(0,_.jsx)(`div`,{className:`mt-1 text-xs text-muted-foreground/70`,children:r}):null]})]})}function w(){let{t:e}=l(),[t,n]=(0,g.useState)(null),[w,T]=(0,g.useState)([]),[E,D]=(0,g.useState)([]),[O,k]=(0,g.useState)(null),[A,j]=(0,g.useState)(!0),[M,N]=(0,g.useState)(!1),P=(0,g.useRef)(null),F=(0,g.useCallback)(async()=>{try{let e=await fetch(`/api/analytics/summary`);e.ok&&n(await e.json())}catch{}},[]),I=(0,g.useCallback)(async()=>{try{let e=await fetch(`/api/analytics?limit=50`);e.ok&&T((await e.json()).events)}catch{}},[]),L=(0,g.useCallback)(async()=>{try{let e=await fetch(`/api/sessions`);e.ok&&D(await e.json())}catch{}},[]),R=(0,g.useCallback)(async()=>{if(!M){N(!0);try{let e=m(h.getState().wsUrl);P.current=e;let t=e.on(`stats.get`,e=>{let n=e.payload;k(n),N(!1),t()});e.getStats(),setTimeout(()=>{N(!1),t()},8e3)}catch{N(!1)}}},[M]);(0,g.useEffect)(()=>{let e=()=>{Promise.all([F(),I(),L(),R()]).finally(()=>j(!1))};e();let t=setInterval(e,1e4);return()=>clearInterval(t)},[F,I,L,R]);let{totalAgents:z,activeAgents:B,totalToolCalls:V,totalIterations:H}=(0,g.useMemo)(()=>{let e=0,t=0,n=0,r=0;for(let i of E)for(let a of i.agents)e++,a.status===`running`&&t++,n+=a.toolCalls,r+=a.iterations;return{totalAgents:e,activeAgents:t,totalToolCalls:n,totalIterations:r}},[E]),U=(0,g.useMemo)(()=>t?Object.entries(t.categoryBreakdown).sort((e,t)=>t[1]-e[1]).slice(0,8):[],[t]),W=(0,g.useMemo)(()=>t?Object.entries(t.eventBreakdown).sort((e,t)=>t[1]-e[1]).slice(0,10):[],[t]),G=(0,g.useMemo)(()=>{if(!t)return 0;let e=0;for(let[n,r]of Object.entries(t.eventBreakdown))n.toLowerCase().includes(`error`)&&(e+=r);return e},[t]),K=(0,g.useMemo)(()=>{if(!t)return 0;let e=0;for(let[n,r]of Object.entries(t.eventBreakdown))n.toLowerCase().includes(`warn`)&&(e+=r);return e},[t]),q=(0,g.useMemo)(()=>[...w].reverse(),[w]);return A?(0,_.jsx)(`div`,{className:`flex h-full min-h-0 items-center justify-center bg-[hsl(var(--surface-2)/0.45)] p-4`,children:(0,_.jsxs)(`div`,{className:`ws-surface flex items-center gap-2 rounded-xl px-4 py-3 text-sm text-muted-foreground`,children:[(0,_.jsx)(r,{className:`h-4 w-4 animate-spin text-primary`}),e(`activity:analytics.loading`)]})}):(0,_.jsx)(`div`,{className:`h-full min-h-0 min-w-0 overflow-y-auto bg-[hsl(var(--surface-2)/0.45)] p-4 sm:p-6`,children:(0,_.jsxs)(`div`,{className:`mx-auto flex w-full max-w-7xl flex-col gap-5`,children:[(0,_.jsx)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:(0,_.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between`,children:[(0,_.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,_.jsx)(s,{className:`h-4 w-4 text-primary`}),(0,_.jsx)(`h1`,{className:`truncate text-base font-semibold`,children:e(`activity:analytics.heading`)})]}),(0,_.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e(`activity:analytics.autoRefresh`)})]})}),(0,_.jsxs)(`div`,{className:`min-w-0 space-y-5`,children:[(0,_.jsxs)(`div`,{className:`grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-3`,children:[(0,_.jsx)(C,{icon:(0,_.jsx)(i,{className:`h-4 w-4`}),label:e(`activity:analytics.liveSessions`),value:E.length,color:`text-primary`}),(0,_.jsx)(C,{icon:(0,_.jsx)(d,{className:`h-4 w-4`}),label:e(`activity:analytics.agents`),value:`${B}/${z}`,sub:B>0?e(`activity:analytics.agentsActive`,{count:B}):void 0,color:`text-success`}),(0,_.jsx)(C,{icon:(0,_.jsx)(f,{className:`h-4 w-4`}),label:e(`activity:analytics.totalEvents`),value:t?.totalEvents??0,sub:e(`activity:analytics.categoriesSub`,{count:t?.uniqueCategories??0}),color:`text-warning`}),(0,_.jsx)(C,{icon:(0,_.jsx)(u,{className:`h-4 w-4`}),label:e(`activity:analytics.toolCalls`),value:V,sub:e(`activity:analytics.iterationsSub`,{count:H}),color:`text-success`}),(0,_.jsx)(C,{icon:(0,_.jsx)(o,{className:`h-4 w-4`}),label:e(`activity:analytics.sessionCost`),value:O?b(O.cost):`—`,sub:O?e(`activity:analytics.tokensSub`,{input:y(O.usage.input),output:y(O.usage.output)}):void 0,color:`text-primary`}),(0,_.jsx)(C,{icon:(0,_.jsx)(a,{className:`h-4 w-4`}),label:e(`activity:analytics.sessionDuration`),value:O?v(O.elapsedMs):`—`,sub:O?e(`activity:analytics.messagesSub`,{count:O.messages}):void 0,color:`text-muted-foreground`})]}),(0,_.jsxs)(`div`,{className:`grid grid-cols-1 lg:grid-cols-2 gap-4`,children:[(0,_.jsxs)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:[(0,_.jsxs)(`h3`,{className:`mb-3 flex items-center gap-2 text-xs font-semibold uppercase text-muted-foreground`,children:[(0,_.jsx)(c,{className:`h-3.5 w-3.5 text-primary`}),e(`activity:analytics.eventsByCategory`)]}),U.length===0?(0,_.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`activity:analytics.noEvents`)}):(0,_.jsx)(`div`,{className:`space-y-1.5`,children:U.map(([e,t])=>{let n=U[0]?.[1]??1,r=Math.round(t/n*100);return(0,_.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,7rem)_minmax(0,1fr)_2.5rem] items-center gap-2 text-xs`,children:[(0,_.jsx)(`span`,{className:`min-w-0 truncate text-foreground`,children:e}),(0,_.jsx)(`div`,{className:`h-4 overflow-hidden rounded-full bg-muted`,children:(0,_.jsx)(`div`,{className:`h-full rounded-full bg-primary/70 transition-all`,style:{width:`${Math.max(r,4)}%`}})}),(0,_.jsx)(`span`,{className:`text-right tabular-nums text-muted-foreground`,children:t})]},e)})})]}),(0,_.jsxs)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:[(0,_.jsxs)(`h3`,{className:`mb-3 flex items-center gap-2 text-xs font-semibold uppercase text-muted-foreground`,children:[(0,_.jsx)(s,{className:`h-3.5 w-3.5 text-warning`}),e(`activity:analytics.topEvents`)]}),W.length===0?(0,_.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`activity:analytics.noEvents`)}):(0,_.jsx)(`div`,{className:`space-y-1.5`,children:W.map(([e,t])=>{let n=W[0]?.[1]??1,r=Math.round(t/n*100);return(0,_.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,9rem)_minmax(0,1fr)_2.5rem] items-center gap-2 text-xs`,children:[(0,_.jsx)(`span`,{className:`min-w-0 truncate ${S(e)}`,children:e}),(0,_.jsx)(`div`,{className:`h-4 overflow-hidden rounded-full bg-muted`,children:(0,_.jsx)(`div`,{className:`h-full rounded-full bg-warning/70 transition-all`,style:{width:`${Math.max(r,4)}%`}})}),(0,_.jsx)(`span`,{className:`text-right tabular-nums text-muted-foreground`,children:t})]},e)})})]})]}),(0,_.jsxs)(`div`,{className:`grid grid-cols-1 lg:grid-cols-2 gap-4`,children:[(0,_.jsxs)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:[(0,_.jsxs)(`h3`,{className:`mb-3 flex items-center gap-2 text-xs font-semibold uppercase text-muted-foreground`,children:[(0,_.jsx)(o,{className:`h-3.5 w-3.5 text-primary`}),e(`activity:analytics.activeSessionUsage`)]}),O?(0,_.jsxs)(`div`,{className:`grid grid-cols-2 gap-3 text-xs`,children:[(0,_.jsxs)(`div`,{className:`min-w-0 rounded-lg border border-border/70 bg-background/50 px-3 py-2`,children:[(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.provider`)}),(0,_.jsx)(`p`,{className:`mt-0.5 truncate font-mono text-foreground`,children:O.provider})]}),(0,_.jsxs)(`div`,{className:`min-w-0 rounded-lg border border-border/70 bg-background/50 px-3 py-2`,children:[(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.model`)}),(0,_.jsx)(`p`,{className:`mt-0.5 truncate font-mono text-foreground`,children:O.model})]}),(0,_.jsxs)(`div`,{className:`rounded-lg border border-border/70 bg-background/50 px-3 py-2`,children:[(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.inputTokens`)}),(0,_.jsx)(`p`,{className:`mt-0.5 tabular-nums text-foreground`,children:y(O.usage.input)})]}),(0,_.jsxs)(`div`,{className:`rounded-lg border border-border/70 bg-background/50 px-3 py-2`,children:[(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.outputTokens`)}),(0,_.jsx)(`p`,{className:`mt-0.5 tabular-nums text-foreground`,children:y(O.usage.output)})]}),(0,_.jsxs)(`div`,{className:`rounded-lg border border-border/70 bg-background/50 px-3 py-2`,children:[(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.cacheRatio`)}),(0,_.jsxs)(`p`,{className:`mt-0.5 tabular-nums text-foreground`,children:[(O.cache.ratio*100).toFixed(1),`%`]})]}),(0,_.jsxs)(`div`,{className:`rounded-lg border border-border/70 bg-background/50 px-3 py-2`,children:[(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.filesRead`)}),(0,_.jsx)(`p`,{className:`mt-0.5 tabular-nums text-foreground`,children:O.readFiles})]})]}):(0,_.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`activity:analytics.noSession`)})]}),(0,_.jsxs)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:[(0,_.jsxs)(`h3`,{className:`mb-3 flex items-center gap-2 text-xs font-semibold uppercase text-muted-foreground`,children:[(0,_.jsx)(p,{className:`h-3.5 w-3.5 text-warning`}),e(`activity:analytics.healthErrors`)]}),(0,_.jsx)(`div`,{className:`space-y-2 text-xs`,children:t?(0,_.jsxs)(_.Fragment,{children:[(0,_.jsxs)(`div`,{className:`flex justify-between`,children:[(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.errorEvents`)}),(0,_.jsx)(`span`,{className:`tabular-nums text-destructive`,children:G})]}),(0,_.jsxs)(`div`,{className:`flex justify-between`,children:[(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.warningEvents`)}),(0,_.jsx)(`span`,{className:`tabular-nums text-warning`,children:K})]}),(0,_.jsxs)(`div`,{className:`flex justify-between`,children:[(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.cacheHitRate`)}),(0,_.jsx)(`span`,{className:`tabular-nums text-success`,children:O?`${(O.cache.ratio*100).toFixed(1)}%`:`—`})]}),(0,_.jsxs)(`div`,{className:`flex justify-between`,children:[(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.totalCategories`)}),(0,_.jsx)(`span`,{className:`tabular-nums text-foreground`,children:t.uniqueCategories})]})]}):(0,_.jsx)(`p`,{className:`text-muted-foreground`,children:e(`activity:analytics.waitingData`)})})]})]}),(0,_.jsxs)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:[(0,_.jsxs)(`h3`,{className:`mb-3 flex items-center gap-2 text-xs font-semibold uppercase text-muted-foreground`,children:[(0,_.jsx)(i,{className:`h-3.5 w-3.5 text-primary`}),e(`activity:analytics.recentEvents`)]}),w.length===0?(0,_.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`activity:analytics.noRecentEvents`)}):(0,_.jsx)(`div`,{className:`max-h-64 space-y-1 overflow-y-auto`,children:q.map((e,t)=>(0,_.jsxs)(`div`,{className:`grid grid-cols-[4rem_minmax(0,7rem)_minmax(0,6rem)_minmax(0,1fr)] items-start gap-2 rounded px-2 py-1 text-xs hover:bg-muted/60`,children:[(0,_.jsx)(`span`,{className:`tabular-nums text-muted-foreground/70`,children:x(e.timestamp)}),(0,_.jsx)(`span`,{className:`min-w-0 truncate ${S(e.event)}`,children:e.event}),(0,_.jsx)(`span`,{className:`min-w-0 truncate text-muted-foreground`,children:e.category}),(0,_.jsx)(`span`,{className:`min-w-0 truncate text-foreground/80`,children:e.label??e.sessionId??``})]},`${e.timestamp}-${t}`))})]})]})]})})}export{w as AnalyticsDashboard};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./chat-store-Dy1m3oen.js";import{m as n,p as r}from"./markdown-BRAejDWd.js";import{Gt as i,Hr as a,It as o,Kr as s,Kt as c,Lt as l,X as u,Xt as d,Z as f,_i as p,bt as m,ct as h,fr as g,ii as _,mi as v,mr as y,ot as b,qr as x,si as S,ti as C}from"./vendor-C9iFsXuW.js";import"./i18n-ClFSbktB.js";import{t as w}from"./utils-Bl7Yr7Bw.js";import{F as T,N as E,S as D,Y as O,a as k,i as A,j,o as M,p as N}from"./index-DGwt4pL3.js";var P=e(n(),1),F=r(),I={pending:{icon:(0,F.jsx)(y,{className:`w-4 h-4`}),color:`text-muted-foreground`,label:`Pending`},in_progress:{icon:(0,F.jsx)(g,{className:`w-4 h-4 animate-spin`}),color:`text-primary`,label:`In Progress`},blocked:{icon:(0,F.jsx)(d,{className:`w-4 h-4`}),color:`text-warning`,label:`Blocked`},failed:{icon:(0,F.jsx)(_,{className:`w-4 h-4`}),color:`text-destructive`,label:`Failed`},review:{icon:(0,F.jsx)(o,{className:`w-4 h-4`}),color:`text-info`,label:`Review`},completed:{icon:(0,F.jsx)(S,{className:`w-4 h-4`}),color:`text-success`,label:`Done`}},L={critical:`bg-destructive/15 text-destructive`,high:`bg-warning/15 text-warning`,medium:`bg-info/15 text-info`,low:`bg-muted text-muted-foreground`},R={feature:`bg-success/15 text-success`,bugfix:`bg-destructive/15 text-destructive`,refactor:`bg-primary/15 text-primary`,docs:`bg-info/15 text-info`,test:`bg-primary/15 text-primary`,chore:`bg-muted text-muted-foreground`};function z(e){if(!e)return``;let t=Math.floor(e/6e4);if(t<60)return`${t}m`;let n=Math.floor(t/60),r=t%60;return r>0?`${n}h ${r}m`:`${n}h`}function B({task:e,onStatusChange:t,onRetry:n,agents:r,onAssign:i,compact:a,className:s}){let{t:c}=v(),l=I[e.status],[u,d]=(0,P.useState)(!1),f=e.status===`in_progress`;return(0,F.jsxs)(`div`,{className:w(`w-full text-left rounded-lg border p-3 transition-all hover:shadow-sm`,f?`border-primary/40 bg-primary/5`:e.status===`completed`?`border-success/35 bg-success/6`:e.status===`failed`?`border-destructive/40 bg-destructive/5`:`border-border bg-card`,s),children:[(0,F.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,F.jsx)(`span`,{className:w(`mt-0.5`,l.color),role:`img`,"aria-label":f?c(`common:status.inProgress`):void 0,children:l.icon}),(0,F.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,F.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,F.jsx)(`span`,{className:`text-sm font-medium`,children:e.title}),(0,F.jsx)(`span`,{className:w(`px-1.5 py-0.5 rounded text-[10px] font-medium`,L[e.priority]),children:e.priority}),(0,F.jsx)(`span`,{className:w(`px-1.5 py-0.5 rounded text-[10px] font-medium`,R[e.type]),children:e.type})]}),e.description&&(0,F.jsx)(`p`,{className:`text-xs text-muted-foreground mt-1 line-clamp-2`,children:e.description})]})]}),e.assignee&&(0,F.jsxs)(`div`,{className:w(`mt-2 inline-flex items-center gap-1.5 rounded-full px-2 py-0.5 text-[10px] font-medium`,f?`bg-primary/15 text-primary`:`bg-muted text-muted-foreground`),children:[f&&(0,F.jsx)(g,{className:`w-3 h-3 animate-spin`,"aria-label":c(`common:status.working`)}),(0,F.jsx)(`span`,{children:e.assignee})]}),(0,F.jsxs)(`div`,{className:`flex items-center gap-3 mt-2 text-xs text-muted-foreground`,children:[e.estimateHours?(0,F.jsxs)(`span`,{children:[`~`,e.estimateHours,`h`]}):null,e.actualHours?(0,F.jsxs)(`span`,{children:[`• `,e.actualHours,`h`]}):null,e.startedAt?(0,F.jsxs)(`span`,{children:[`• `,z(Date.now()-e.startedAt)]}):null]}),e.tags.length>0&&(0,F.jsx)(`div`,{className:`flex flex-wrap gap-1 mt-2`,children:e.tags.map(e=>(0,F.jsx)(`span`,{className:`px-1.5 py-0.5 rounded text-[10px] bg-muted text-muted-foreground`,children:e},e))}),!a&&(0,F.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1 mt-2`,children:[t&&e.status!==`in_progress`&&e.status!==`completed`&&(0,F.jsx)(`button`,{type:`button`,onClick:()=>t(e.id,`in_progress`),className:`px-2 py-0.5 text-[10px] rounded bg-primary/15 text-primary hover:bg-primary/25 transition-colors`,children:c(`activity:task.start`)}),t&&e.status===`in_progress`&&(0,F.jsx)(`button`,{type:`button`,onClick:()=>t(e.id,`completed`),className:`px-2 py-0.5 text-[10px] rounded bg-success/15 text-success hover:bg-success/25 transition-colors`,children:c(`activity:task.complete`)}),n&&(e.status===`failed`||e.status===`completed`)&&(0,F.jsxs)(`button`,{type:`button`,onClick:()=>n(e.id),className:`px-2 py-0.5 text-[10px] rounded bg-muted text-muted-foreground hover:bg-muted/70 transition-colors inline-flex items-center gap-1`,children:[(0,F.jsx)(o,{className:`w-3 h-3`}),` `,c(`activity:task.retry`)]}),i&&r&&r.length>0&&(u?(0,F.jsxs)(`select`,{defaultValue:e.assignee??``,onChange:t=>{i(e.id,t.target.value),d(!1)},onBlur:()=>d(!1),className:`px-1 py-0.5 text-[10px] rounded border border-border bg-card`,children:[(0,F.jsx)(`option`,{value:``,children:c(`activity:task.unassigned`)}),r.map(e=>(0,F.jsx)(`option`,{value:e,children:e},e))]}):(0,F.jsxs)(`button`,{type:`button`,onClick:()=>d(!0),className:`px-2 py-0.5 text-[10px] rounded bg-muted text-muted-foreground hover:bg-muted/70 transition-colors inline-flex items-center gap-1`,title:c(`activity:task.assignTitle`),children:[(0,F.jsx)(b,{className:`w-3 h-3`}),` `,c(`activity:task.assign`)]}))]})]})}var V=[{key:`pending`,label:`Pending`,match:[`pending`,`blocked`]},{key:`in_progress`,label:`In Progress`,match:[`in_progress`]},{key:`review`,label:`Review`,match:[`review`]},{key:`failed`,label:`Failed`,match:[`failed`]},{key:`completed`,label:`Done`,match:[`completed`]}],H={pending:`bg-muted text-muted-foreground`,ready:`bg-info/15 text-info`,running:`bg-primary/15 text-primary`,paused:`bg-warning/15 text-warning`,completed:`bg-success/15 text-success`,failed:`bg-destructive/15 text-destructive`,skipped:`bg-muted text-muted-foreground`};function U(){let{client:e}=j(),{t}=v(),n=O(e=>e.phases),[r,o]=(0,P.useState)(`phase`),[s,c]=(0,P.useState)(null),[l,u]=(0,P.useState)(null),d=(0,P.useMemo)(()=>n.flatMap(e=>(e.tasks??[]).map(t=>({...t,phaseId:e.id}))),[n]),f=(0,P.useMemo)(()=>[...new Set(d.map(e=>e.assignee).filter(e=>!!e))],[d]),p=(0,P.useCallback)(t=>e?.send?.(t),[e]),m=(0,P.useCallback)((e,t)=>p({type:`autophase.taskStatus`,payload:{taskId:e,status:t}}),[p]),h=(0,P.useCallback)(e=>p({type:`autophase.retryTask`,payload:{taskId:e}}),[p]),g=(0,P.useCallback)((e,t)=>p({type:`autophase.assignTask`,payload:{taskId:e,agentName:t||void 0}}),[p]),_=(0,P.useCallback)(e=>{N({title:t(`activity:board.newTaskTitle`),placeholder:t(`activity:board.newTaskPlaceholder`),confirmLabel:t(`activity:board.addTask`)}).then(t=>{t&&p({type:`autophase.addTask`,payload:{phaseId:e,title:t}})})},[p]),y=(0,P.useCallback)(e=>{s&&p({type:`autophase.moveTask`,payload:{taskId:s,toPhaseId:e}}),c(null),u(null)},[s,p]),b=(0,P.useCallback)(e=>{s&&p({type:`autophase.taskStatus`,payload:{taskId:s,status:e}}),c(null),u(null)},[s,p]),x={onStatusChange:m,onRetry:h,agents:f,onAssign:g};function S(e){return{draggable:!0,onDragStart:t=>{c(e),t.dataTransfer.effectAllowed=`move`},onDragEnd:()=>{c(null),u(null)}}}function T(e,t){return{onDragOver:t=>{t.preventDefault(),t.dataTransfer.dropEffect=`move`,l!==e&&u(e)},onDragLeave:()=>u(t=>t===e?null:t),onDrop:e=>{e.preventDefault(),t()},"data-hover":l===e||void 0}}return n.length===0?(0,F.jsx)(`div`,{className:`flex h-full min-h-0 min-w-0 items-center justify-center text-muted-foreground`,children:(0,F.jsx)(`p`,{className:`text-sm`,children:t(`activity:board.empty`)})}):(0,F.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-col`,children:[(0,F.jsxs)(`div`,{className:`flex items-center justify-between border-b border-border px-4 py-2`,children:[(0,F.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:t(`activity:board.summary`,{phases:n.length,tasks:d.length})}),(0,F.jsxs)(`div`,{className:`flex items-center gap-1 rounded-md border border-border p-0.5`,children:[(0,F.jsxs)(`button`,{type:`button`,onClick:()=>o(`phase`),className:w(`inline-flex items-center gap-1 rounded px-2 py-1 text-xs transition-colors`,r===`phase`?`bg-primary/15 text-primary`:`text-muted-foreground hover:text-foreground`),children:[(0,F.jsx)(C,{className:`h-3.5 w-3.5`}),` `,t(`activity:board.phases`)]}),(0,F.jsxs)(`button`,{type:`button`,onClick:()=>o(`status`),className:w(`inline-flex items-center gap-1 rounded px-2 py-1 text-xs transition-colors`,r===`status`?`bg-primary/15 text-primary`:`text-muted-foreground hover:text-foreground`),children:[(0,F.jsx)(a,{className:`h-3.5 w-3.5`}),` `,t(`activity:board.statusTab`)]})]})]}),r===`phase`?(0,F.jsx)(`div`,{className:`flex min-h-0 min-w-0 flex-1 gap-3 overflow-x-auto p-3`,children:n.map(e=>{let n=d.filter(t=>t.phaseId===e.id);return(0,F.jsxs)(`div`,{...T(`phase:${e.id}`,()=>y(e.id)),className:w(`flex min-h-0 w-80 shrink-0 flex-col rounded-lg border bg-muted/30 transition-colors`,l===`phase:${e.id}`?`border-primary/60 bg-primary/5`:`border-border`),children:[(0,F.jsxs)(`div`,{className:`flex items-center justify-between gap-2 border-b border-border px-3 py-2`,children:[(0,F.jsxs)(`div`,{className:`min-w-0`,children:[(0,F.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,F.jsx)(`span`,{className:`truncate text-sm font-semibold`,children:e.name}),(0,F.jsx)(`span`,{className:w(`rounded px-1.5 py-0.5 text-[10px] font-medium capitalize`,H[e.status]),children:e.status})]}),(0,F.jsxs)(`span`,{className:`text-[11px] text-muted-foreground`,children:[e.completedTasks,`/`,e.taskCount,` · `,e.progressPercent,`%`]})]}),(0,F.jsx)(`button`,{type:`button`,onClick:()=>_(e.id),title:t(`activity:board.addTask`),className:`rounded p-1 text-muted-foreground hover:bg-muted hover:text-foreground`,children:(0,F.jsx)(i,{className:`h-4 w-4`})})]}),(0,F.jsx)(`div`,{className:`min-h-0 flex-1 space-y-2 overflow-y-auto p-2`,children:n.length===0?(0,F.jsx)(`p`,{className:`px-1 py-4 text-center text-[11px] text-muted-foreground`,children:t(`activity:board.dropHere`)}):n.map(e=>(0,F.jsx)(`div`,{...S(e.id),className:w(s===e.id&&`opacity-50`),children:(0,F.jsx)(B,{task:e,...x})},e.id))})]},e.id)})}):(0,F.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-auto p-3`,children:(0,F.jsxs)(`div`,{className:`grid min-w-[900px] gap-2`,style:{gridTemplateColumns:`9rem repeat(${V.length}, minmax(0, 1fr))`},children:[(0,F.jsx)(`div`,{}),V.map(e=>(0,F.jsx)(`div`,{className:`px-2 pb-1 text-xs font-semibold uppercase tracking-wider text-muted-foreground`,children:t(`activity:board.status.${e.key}`)},e.key)),n.map(e=>(0,F.jsxs)(W,{children:[(0,F.jsx)(`div`,{className:`flex items-center pr-2`,children:(0,F.jsxs)(`div`,{className:`min-w-0`,children:[(0,F.jsx)(`div`,{className:`truncate text-sm font-medium`,children:e.name}),(0,F.jsx)(`span`,{className:w(`mt-0.5 inline-block rounded px-1.5 py-0.5 text-[10px] capitalize`,H[e.status]),children:e.status})]})}),V.map(t=>{let n=d.filter(n=>n.phaseId===e.id&&t.match.includes(n.status)),r=`cell:${e.id}:${t.key}`;return(0,F.jsx)(`div`,{...T(r,()=>b(t.key)),className:w(`min-h-[4rem] space-y-2 rounded-md border p-1.5 transition-colors`,l===r?`border-primary/60 bg-primary/5`:`border-border bg-muted/20`),children:n.map(e=>(0,F.jsx)(`div`,{...S(e.id),className:w(s===e.id&&`opacity-50`),children:(0,F.jsx)(B,{task:e,compact:!0,...x})},e.id))},t.key)})]},e.id))]})})]})}function W({children:e}){return(0,F.jsx)(F.Fragment,{children:e})}function G({onClose:e}){let{client:n}=j(),{t:r}=v(),a=O(e=>e.phases),o=O(e=>e.overallPercent),g=O(e=>e.autonomous),_=O(e=>e.title),y=O(e=>e.goal),b=O(e=>e.status),S=O(e=>e.lastError),C=O(e=>e.graphs);(0,P.useEffect)(()=>{n?.send?.({type:`autophase.list`}),n?.send?.({type:`autophase.state`})},[n]);let N=T(e=>e.worktrees),I=T(e=>e.baseBranch),[L,R]=(0,P.useState)(``),[z,B]=(0,P.useState)(null),[V,H]=(0,P.useState)(!1),[W,G]=(0,P.useState)(!0),K=a.length>0,q=z!=null&&!K;(0,P.useEffect)(()=>{K&&B(null)},[K]);let J=(0,P.useCallback)(()=>{let e=L.trim();if(!e||z!=null)return;let r=t.getState();r.addMessage({role:`user`,content:e}),r.addMessage({role:`assistant`,content:p.t(`activity:autoPhase.planningAck`)}),B(e),R(``),n?.send?.({type:`autophase.start`,payload:{title:e,autonomous:!0,worktrees:W}}),E(`chat`)},[L,z,n,W]),Y=(0,P.useCallback)(()=>{n?.send?.({type:`autophase.stop`,payload:{}}),B(null)},[n]),X=(0,P.useCallback)(()=>{n?.send?.({type:`autophase.toggleAutonomous`,payload:{}})},[n]),Z=(0,P.useCallback)(()=>{n?.send?.(b===`paused`?{type:`autophase.resume`,payload:{}}:{type:`autophase.pause`,payload:{}})},[n,b]),Q=(0,P.useCallback)(()=>{n?.send?.({type:`autophase.stop`,payload:{}})},[n]),ee=(0,P.useCallback)(()=>{n?.send?.({type:`autophase.clear`,payload:{}}),O.getState().clear(),B(null),R(``)},[n]),[te,$]=(0,P.useState)(!1),ne=(0,P.useCallback)(()=>{n?.send?.({type:`autophase.revert`,payload:{}}),$(!1)},[n]),re=b===`running`||b===`paused`,ie=b===`stopped`||b===`completed`||b===`failed`,ae=(0,P.useCallback)(e=>{e&&n?.send?.({type:`autophase.load`,payload:{graphId:e}})},[n]);return(0,F.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-col bg-background`,children:[(0,F.jsxs)(`header`,{className:`flex shrink-0 flex-col gap-2 border-b bg-card px-4 py-2 sm:flex-row sm:items-center sm:justify-between`,children:[(0,F.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,F.jsx)(x,{className:`h-5 w-5 text-muted-foreground`}),(0,F.jsxs)(`div`,{children:[(0,F.jsx)(`h1`,{className:`text-lg font-semibold`,children:K&&_||`AutoPhase`}),K&&(0,F.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:r(`activity:autoPhase.summary`,{count:a.length,pct:o})})]}),K&&(0,F.jsx)(`span`,{className:w(`rounded border px-2 py-0.5 text-[11px] font-medium capitalize`,b===`failed`?`border-destructive/40 bg-destructive/10 text-destructive`:b===`paused`||b===`stopped`?`border-warning/40 bg-warning/10 text-warning`:b===`completed`?`border-success/40 bg-success/10 text-success`:`border-primary/30 bg-primary/10 text-primary`),title:S??void 0,children:b})]}),(0,F.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2 sm:justify-end`,children:[C.length>0&&(0,F.jsxs)(`select`,{value:K?C.find(e=>e.title===_)?.id??``:``,onChange:e=>ae(e.target.value),title:r(`activity:autoPhase.switchBoard`),className:`min-w-0 flex-1 rounded border border-border bg-card px-2 py-1 text-xs text-foreground sm:w-72 sm:flex-none`,children:[(0,F.jsx)(`option`,{value:``,disabled:!0,children:r(`activity:autoPhase.boardsCount`,{count:C.length})}),C.map(e=>(0,F.jsxs)(`option`,{value:e.id,children:[e.title,` · `,e.status]},e.id))]}),K&&(0,F.jsxs)(`button`,{type:`button`,onClick:X,title:r(`activity:autoPhase.toggleAutonomousTitle`),className:w(`inline-flex items-center gap-1 rounded border px-2 py-1 text-xs transition-colors`,g?`border-primary/30 bg-primary/10 text-primary`:`border-border text-muted-foreground hover:text-foreground`),children:[(0,F.jsx)(u,{className:`h-3.5 w-3.5`}),` `,r(g?`activity:autoPhase.autonomous`:`activity:autoPhase.manual`)]}),re&&(0,F.jsxs)(F.Fragment,{children:[(0,F.jsxs)(`button`,{type:`button`,onClick:Z,title:r(b===`paused`?`activity:autoPhase.resumeTitle`:`activity:autoPhase.pauseTitle`),className:`inline-flex items-center gap-1 rounded border border-border px-2 py-1 text-xs text-muted-foreground transition-colors hover:text-foreground`,children:[b===`paused`?(0,F.jsx)(c,{className:`h-3.5 w-3.5`}):(0,F.jsx)(d,{className:`h-3.5 w-3.5`}),r(b===`paused`?`activity:autoPhase.resume`:`activity:autoPhase.pause`)]}),(0,F.jsxs)(`button`,{type:`button`,onClick:Q,title:r(`activity:autoPhase.stopTitle`),className:`inline-flex items-center gap-1 rounded border border-destructive/40 bg-destructive/10 px-2 py-1 text-xs font-medium text-destructive transition-colors hover:bg-destructive/20`,children:[(0,F.jsx)(m,{className:`h-3.5 w-3.5 fill-current`}),` `,r(`activity:autoPhase.stop`)]})]}),K&&ie&&(0,F.jsxs)(F.Fragment,{children:[(0,F.jsxs)(`button`,{type:`button`,onClick:ee,title:r(`activity:autoPhase.newTitle`),className:`inline-flex items-center gap-1 rounded border border-primary/30 bg-primary/10 px-2 py-1 text-xs font-medium text-primary transition-colors hover:bg-primary/20`,children:[(0,F.jsx)(i,{className:`h-3.5 w-3.5`}),` `,r(`activity:autoPhase.newLabel`)]}),te?(0,F.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded border border-warning/40 bg-warning/10 px-1.5 py-0.5 text-xs`,children:[(0,F.jsx)(`span`,{className:`text-warning`,children:r(`activity:autoPhase.revertConfirm`)}),(0,F.jsx)(`button`,{type:`button`,onClick:ne,className:`rounded bg-destructive/15 px-1.5 py-0.5 font-medium text-destructive hover:bg-destructive/25`,children:r(`common:action.yes`)}),(0,F.jsx)(`button`,{type:`button`,onClick:()=>$(!1),className:`rounded px-1.5 py-0.5 text-muted-foreground hover:text-foreground`,children:r(`common:action.no`)})]}):(0,F.jsxs)(`button`,{type:`button`,onClick:()=>$(!0),title:r(`activity:autoPhase.revertTitle`),className:`inline-flex items-center gap-1 rounded border border-border px-2 py-1 text-xs text-muted-foreground transition-colors hover:text-foreground`,children:[(0,F.jsx)(h,{className:`h-3.5 w-3.5`}),` `,r(`activity:autoPhase.revert`)]})]}),(0,F.jsx)(D,{variant:`ghost`,size:`icon`,onClick:e,children:(0,F.jsx)(f,{className:`h-4 w-4`})})]})]}),K&&y&&(0,F.jsxs)(`div`,{className:`shrink-0 border-b border-border/60 bg-muted/20 px-4 py-2.5`,children:[(0,F.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:[(0,F.jsx)(l,{className:`h-3 w-3`}),` `,r(`activity:autoPhase.goal`)]}),(0,F.jsx)(`p`,{className:`whitespace-pre-wrap text-sm leading-relaxed text-foreground/90`,children:y})]}),K?(0,F.jsx)(`div`,{className:`flex min-h-0 flex-1`,children:(0,F.jsx)(U,{})}):q?(0,F.jsx)(`div`,{className:`flex-1 flex items-center justify-center p-8`,children:(0,F.jsxs)(`div`,{className:`max-w-lg w-full space-y-5 text-center`,children:[(0,F.jsx)(s,{className:`h-10 w-10 mx-auto animate-spin text-primary/70`}),(0,F.jsxs)(`div`,{className:`space-y-1`,children:[(0,F.jsx)(`h2`,{className:`text-xl font-semibold`,children:r(`activity:autoPhase.planning`)}),(0,F.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:r(`activity:autoPhase.planningBody`)})]}),(0,F.jsxs)(`div`,{className:`rounded-lg border border-border bg-card px-4 py-3 text-left`,children:[(0,F.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:[(0,F.jsx)(l,{className:`h-3 w-3`}),` `,r(`activity:autoPhase.goal`)]}),(0,F.jsx)(`p`,{className:`whitespace-pre-wrap text-sm leading-relaxed text-foreground/90`,children:z})]}),(0,F.jsxs)(D,{variant:`outline`,onClick:Y,className:`gap-2`,children:[(0,F.jsx)(m,{className:`h-4 w-4 fill-current`}),` `,r(`common:action.cancel`)]})]})}):(0,F.jsx)(`div`,{className:`flex-1 flex items-center justify-center p-8`,children:(0,F.jsxs)(`div`,{className:`max-w-lg w-full space-y-6`,children:[(0,F.jsxs)(`div`,{className:`text-center space-y-2`,children:[(0,F.jsx)(l,{className:`h-10 w-10 mx-auto text-primary/60`}),(0,F.jsx)(`h2`,{className:`text-xl font-semibold`,children:r(`activity:autoPhase.startHeading`)}),(0,F.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:r(`activity:autoPhase.startBody`)})]}),(0,F.jsx)(`textarea`,{value:L,onChange:e=>R(e.target.value),placeholder:r(`activity:autoPhase.startPlaceholder`),rows:5,className:`w-full rounded-lg border border-border bg-card px-4 py-3 text-sm resize-none focus:outline-none focus:ring-2 focus:ring-primary/30 placeholder:text-muted-foreground/70`,onKeyDown:e=>{e.key===`Enter`&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),J())}}),(0,F.jsxs)(`label`,{className:`flex cursor-pointer items-center justify-center gap-2 text-xs text-muted-foreground`,children:[(0,F.jsx)(`input`,{type:`checkbox`,checked:W,onChange:e=>G(e.target.checked),className:`h-3.5 w-3.5 accent-primary`}),r(`activity:autoPhase.isolateLabel`)]}),(0,F.jsx)(`div`,{className:`flex items-center gap-3`,children:(0,F.jsxs)(D,{onClick:J,disabled:!L.trim(),className:`flex-1 gap-2`,children:[(0,F.jsx)(c,{className:`h-4 w-4`}),r(`activity:autoPhase.startButton`)]})}),(0,F.jsxs)(`p`,{className:`text-xs text-muted-foreground text-center`,children:[r(`activity:autoPhase.ctrlHint`),` ·`,` `,r(W?`activity:autoPhase.isolateOn`:`activity:autoPhase.isolateOff`)]})]})}),N.length>0&&(0,F.jsxs)(`div`,{className:`border-t bg-card/50 shrink-0`,children:[(0,F.jsxs)(`div`,{className:`flex items-center justify-end gap-2 px-4 pt-2 text-xs`,children:[(0,F.jsx)(`button`,{type:`button`,onClick:()=>H(!1),className:w(`rounded px-2 py-0.5 border transition-colors`,V?`border-border text-muted-foreground hover:text-foreground`:`bg-primary/10 border-primary/30 text-primary`),children:r(`activity:autoPhase.lanes`)}),(0,F.jsx)(`button`,{type:`button`,onClick:()=>H(!0),className:w(`rounded px-2 py-0.5 border transition-colors`,V?`bg-primary/10 border-primary/30 text-primary`:`border-border text-muted-foreground hover:text-foreground`),children:r(`activity:autoPhase.graph`)})]}),(0,F.jsxs)(`div`,{className:`space-y-2 px-4 pb-3`,children:[(0,F.jsx)(A,{}),V?(0,F.jsx)(M,{worktrees:N,baseBranch:I}):(0,F.jsx)(k,{worktrees:N,baseBranch:I})]})]})]})}export{G as AutoPhaseView};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{m as t,p as n}from"./markdown-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{m as t,p as n}from"./markdown-BRAejDWd.js";import{Bt as r,Hr as i,Kr as a,Pt as o,Sr as s,Zn as c,mi as l,ni as u}from"./vendor-C9iFsXuW.js";import"./i18n-ClFSbktB.js";import{i as d,r as f,s as p,t as m}from"./monaco-MjnRih9i.js";import{t as h}from"./ws-client-WVS5hdJj.js";import{t as g}from"./utils-Bl7Yr7Bw.js";import{J as _,U as v,b as y}from"./index-DGwt4pL3.js";import{t as b}from"./monaco-theme-DhdHiZEb.js";var x=e(t(),1),S=n();d.config({monaco:m});var C={ts:`typescript`,tsx:`typescript`,js:`javascript`,jsx:`javascript`,mjs:`javascript`,json:`json`,css:`css`,scss:`scss`,html:`html`,md:`markdown`,py:`python`,go:`go`,rs:`rust`,java:`java`,c:`c`,cpp:`cpp`,cs:`csharp`,rb:`ruby`,php:`php`,sh:`shell`,bash:`shell`,yml:`yaml`,yaml:`yaml`,toml:`toml`,sql:`sql`};function w(e){return C[e.split(`.`).pop()?.toLowerCase()??``]??`plaintext`}function T({path:e,oldText:t,newText:n}){let{t:r}=l(),i=(0,x.useRef)(null),[c,u]=(0,x.useState)(!1),[d,m]=(0,x.useState)(!1),[g,v]=(0,x.useState)(null);(0,x.useEffect)(()=>{u(!1),m(!1),v(null)},[]);let y=(0,x.useCallback)(e=>{i.current=e,p.setTheme(b()),e.getModifiedEditor().onDidChangeModelContent(()=>u(!0))},[]),C=(0,x.useCallback)(()=>{let t=i.current?.getModifiedEditor().getValue();if(t==null)return;m(!0);let n=h(_.getState().wsUrl),r=n.on(`files.written`,t=>{t.type===`files.written`&&t.payload.filePath===e&&(r(),clearTimeout(a),m(!1),t.payload.success&&(u(!1),v(Date.now())))}),a=setTimeout(()=>{r(),m(!1)},5e3);n.send({type:`files.write`,payload:{filePath:e,content:t}})},[e]),T=w(e);return(0,S.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden`,children:[(0,S.jsxs)(`div`,{className:`flex min-w-0 items-center justify-between gap-2 px-2 py-1.5 border-b border-border/40`,children:[(0,S.jsx)(`span`,{className:`text-xs font-mono text-muted-foreground truncate`,children:e}),(0,S.jsxs)(`button`,{type:`button`,onClick:C,disabled:!c||d,className:`inline-flex items-center gap-1.5 h-7 px-2.5 rounded-md border border-border text-xs font-medium disabled:opacity-40 enabled:hover:bg-muted transition-colors`,title:r(`activity:monacoDiff.applyTitle`),children:[d?(0,S.jsx)(a,{className:`h-3.5 w-3.5 animate-spin`}):g&&!c?(0,S.jsx)(s,{className:`h-3.5 w-3.5 text-success`}):(0,S.jsx)(o,{className:`h-3.5 w-3.5`}),r(d?`activity:monacoDiff.applying`:g&&!c?`activity:monacoDiff.applied`:`activity:monacoDiff.apply`)]})]}),(0,S.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-hidden`,children:(0,S.jsx)(f,{original:t,modified:n,language:T,theme:b(),onMount:y,options:{renderSideBySide:!0,readOnly:!1,originalEditable:!1,minimap:{enabled:!1},fontSize:13,scrollBeyondLastLine:!1,automaticLayout:!0}})})]})}var E=1e4;function D({className:e}){let{t}=l(),n=v(e=>e.selectedPath),o=v(e=>e.diff),s=v(e=>e.loadingDiff),[d,f]=(0,x.useState)(`unified`),[p,m]=(0,x.useState)(!1),b=!!n&&(s||!o);(0,x.useEffect)(()=>{if(m(!1),!b)return;let e=setTimeout(()=>m(!0),E);return()=>clearTimeout(e)},[b,n]);let C=()=>{n&&(m(!1),v.getState().setDiffLoading(!0),h(_.getState().wsUrl).getGitDiff?.(n))};if(!n)return(0,S.jsx)(`div`,{className:g(`flex min-h-0 min-w-0 flex-1 items-center justify-center bg-[hsl(var(--surface-2)/0.45)] p-4`,e),children:(0,S.jsxs)(`div`,{className:`ws-surface flex max-w-md flex-col items-center gap-3 rounded-xl p-6 text-center text-muted-foreground`,children:[(0,S.jsx)(`span`,{className:`flex h-12 w-12 items-center justify-center rounded-lg bg-primary/10 text-primary`,children:(0,S.jsx)(c,{className:`h-6 w-6`})}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`h2`,{className:`text-base font-semibold text-foreground`,children:`Source changes`}),(0,S.jsx)(`p`,{className:`mt-1 text-sm`,children:t(`activity:changes.selectPrompt`)})]})]})});let w=o&&!o.error&&!o.binary&&!o.tooLarge;return(0,S.jsx)(`div`,{className:g(`flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden bg-[hsl(var(--surface-2)/0.45)] p-3`,e),children:(0,S.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden rounded-xl border border-border/70 bg-card/75 shadow-sm`,children:[(0,S.jsxs)(`div`,{className:`flex shrink-0 flex-wrap items-center justify-between gap-2 border-b border-border/70 px-3 py-2`,children:[(0,S.jsxs)(`div`,{className:`min-w-0`,children:[(0,S.jsx)(`div`,{className:`text-[10px] font-semibold uppercase text-muted-foreground`,children:`Source control`}),(0,S.jsx)(`div`,{className:`truncate font-mono text-xs text-foreground`,title:n,children:n})]}),w&&(0,S.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,S.jsxs)(`button`,{type:`button`,onClick:()=>f(`unified`),title:t(`activity:changes.unifiedTitle`),className:g(`inline-flex h-8 items-center gap-1 rounded-md border px-2 text-xs transition-colors`,d===`unified`?`border-primary/40 bg-primary/10 text-primary`:`border-border text-muted-foreground hover:bg-muted`),children:[(0,S.jsx)(i,{className:`h-3.5 w-3.5`}),` `,t(`activity:changes.unified`)]}),(0,S.jsxs)(`button`,{type:`button`,onClick:()=>f(`edit`),title:t(`activity:changes.editTitle`),className:g(`inline-flex h-8 items-center gap-1 rounded-md border px-2 text-xs transition-colors`,d===`edit`?`border-primary/40 bg-primary/10 text-primary`:`border-border text-muted-foreground hover:bg-muted`),children:[(0,S.jsx)(u,{className:`h-3.5 w-3.5`}),` `,t(`activity:changes.edit`)]})]})]}),(0,S.jsx)(`div`,{className:`min-h-0 flex-1 overflow-hidden`,children:s||!o?p?(0,S.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col items-center justify-center gap-3 p-4 text-center`,children:[(0,S.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:t(`activity:changes.diffTimeout`)}),(0,S.jsxs)(`button`,{type:`button`,onClick:C,className:`inline-flex h-8 items-center gap-1.5 rounded-md border border-border px-3 text-xs text-muted-foreground transition-colors hover:bg-muted hover:text-foreground`,children:[(0,S.jsx)(r,{className:`h-3.5 w-3.5`}),` `,t(`common:action.retry`)]})]}):(0,S.jsxs)(`div`,{className:`flex min-h-0 flex-1 items-center justify-center gap-2 text-sm text-muted-foreground`,children:[(0,S.jsx)(a,{className:`h-4 w-4 animate-spin`}),` `,t(`activity:changes.loadingDiff`)]}):o.error?(0,S.jsx)(`div`,{className:`flex min-h-0 flex-1 items-center justify-center text-sm text-destructive`,children:o.error}):o.binary?(0,S.jsx)(`div`,{className:`flex min-h-0 flex-1 items-center justify-center text-sm text-muted-foreground`,children:t(`activity:changes.binary`)}):o.tooLarge?(0,S.jsx)(`div`,{className:`flex min-h-0 flex-1 items-center justify-center text-sm text-muted-foreground`,children:t(`activity:changes.tooLarge`)}):d===`edit`?(0,S.jsx)(T,{path:o.path,oldText:o.oldText??``,newText:o.newText??``},o.path):(0,S.jsx)(y,{oldText:o.oldText,newText:o.newText,caption:o.path,fill:!0})})]})})}export{D as ChangesView};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{m as t,p as n}from"./markdown-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{m as t,p as n}from"./markdown-BRAejDWd.js";import{Jn as r,Z as i,jt as a,mi as o,mr as s}from"./vendor-C9iFsXuW.js";import"./i18n-ClFSbktB.js";import{a as c,c as l,i as u,n as d,o as f,s as p,t as m}from"./monaco-MjnRih9i.js";import{t as h}from"./ws-client-WVS5hdJj.js";import{t as g}from"./utils-Bl7Yr7Bw.js";import{J as _,K as v,N as y,k as b,q as x}from"./index-DGwt4pL3.js";import{t as S}from"./monaco-theme-DhdHiZEb.js";var C={ts:`typescript`,tsx:`typescript`,js:`javascript`,jsx:`javascript`,json:`json`,css:`css`,html:`html`,svg:`xml`,md:`markdown`,yml:`yaml`,yaml:`yaml`,toml:`toml`,sh:`shell`,bash:`shell`,ps1:`powershell`,py:`python`,rs:`rust`,go:`go`,rb:`ruby`,java:`java`,c:`c`,cpp:`cpp`,h:`c`,hpp:`cpp`,sql:`sql`,xml:`xml`},w=Array.from(new Set(Object.values(C))).filter(e=>e!==`plaintext`),T=12e3,E=4e3,D=5e3,O=1e4;function k(e){return C[e.split(`.`).pop()?.toLowerCase()??``]??`plaintext`}function A(e){return e.match(/([A-Za-z_$][\w$]*)$/)?.[1]??``}function j(e,t){return e.triggerCharacter?!0:t.length>=3}function M(e,t){return e.triggerCharacter===`.`?!0:e.triggerCharacter?!1:/^(findBy|findAllBy|create|update|delete|remove|get[A-Z_]|set[A-Z_]|use[A-Z_])/.test(t)}function N(e){return[e.filePath,e.language,e.lineNumber,e.column,e.versionId??``,e.triggerCharacter??``,e.linePrefix.slice(-160),e.suffix.slice(0,160)].join(`\0`)}var P=e(t(),1),F=n();u.config({monaco:m});function I(e){switch(e){case`method`:return l.CompletionItemKind.Method;case`function`:return l.CompletionItemKind.Function;case`constructor`:return l.CompletionItemKind.Constructor;case`field`:return l.CompletionItemKind.Field;case`variable`:return l.CompletionItemKind.Variable;case`class`:return l.CompletionItemKind.Class;case`interface`:return l.CompletionItemKind.Interface;case`module`:return l.CompletionItemKind.Module;case`property`:return l.CompletionItemKind.Property;case`unit`:return l.CompletionItemKind.Unit;case`value`:return l.CompletionItemKind.Value;case`enum`:return l.CompletionItemKind.Enum;case`keyword`:return l.CompletionItemKind.Keyword;case`snippet`:return l.CompletionItemKind.Snippet;case`file`:return l.CompletionItemKind.File;case`reference`:return l.CompletionItemKind.Reference;default:return l.CompletionItemKind.Text}}function L(){let e=v(e=>e.openFiles),t=v(e=>e.activeFilePath),n=v(e=>e.setActiveFile),r=v(e=>e.closeFile);return e.length===0?null:(0,F.jsx)(`div`,{className:`flex items-center border-b bg-muted/40 overflow-x-auto shrink-0`,children:e.map(e=>{let a=e.path===t,o=e.path.split(`/`).pop()??e.path;return(0,F.jsxs)(`button`,{type:`button`,onClick:()=>n(e.path),onMouseDown:t=>{t.button===1&&(t.preventDefault(),r(e.path))},className:g(`group flex items-center gap-1.5 px-3 py-1.5 text-[11px] border-r whitespace-nowrap min-w-0 max-w-[180px] transition-colors`,a?`bg-background border-t-2 border-t-primary text-foreground -mb-px`:`text-muted-foreground hover:bg-muted/60 hover:text-foreground`),title:e.path,children:[e.dirty&&(0,F.jsx)(s,{className:`h-2 w-2 fill-current text-primary shrink-0`}),(0,F.jsx)(`span`,{className:`truncate`,children:o}),(0,F.jsx)(i,{className:g(`h-3 w-3 shrink-0 rounded-sm hover:bg-muted-foreground/20 opacity-0 group-hover:opacity-100 transition-opacity`,a&&`opacity-100`),onClick:t=>{t.stopPropagation(),r(e.path)}})]},e.path)})})}function R(){let{t:e}=o(),t=v(e=>e.openFiles),n=v(e=>e.activeFilePath),i=v(e=>e.updateContent),{theme:s}=b(),u=(0,P.useRef)(null),m=(0,P.useRef)(n),g=(0,P.useRef)(new Map),C=(0,P.useMemo)(()=>t.find(e=>e.path===n)??null,[t,n]),R=n?k(n):`plaintext`,z=S(),[B,V]=(0,P.useState)(!1);(0,P.useEffect)(()=>{m.current=n},[n]),(0,P.useEffect)(()=>{let e=S();p.setTheme(e)},[s]),(0,P.useEffect)(()=>{let e=w.map(e=>l.registerCompletionItemProvider(e,{triggerCharacters:[`.`,`_`],provideCompletionItems:async(e,t,n,r)=>{let i=m.current;if(!i)return{suggestions:[]};let a=e.getOffsetAt(t),o=e.getValue(),s=o.slice(Math.max(0,a-T),a),c=o.slice(a,a+E),u=e.getLineContent(t.lineNumber).slice(0,Math.max(0,t.column-1)),d=A(u),f={triggerCharacter:n.triggerCharacter,triggerKind:n.triggerKind};if(!j(f,d))return{suggestions:[]};let p=`cmp_${Date.now()}_${Math.random().toString(36).slice(2)}`,v=e.getWordUntilPosition(t),y={startLineNumber:t.lineNumber,endLineNumber:t.lineNumber,startColumn:v.startColumn,endColumn:t.column},b=h(_.getState().wsUrl),x=e=>e.map((e,t)=>({label:e.label,kind:I(e.kind),insertText:e.insertText,detail:e.detail??(e.source?`WrongStack ${e.source}`:void 0),documentation:e.documentation,sortText:e.sortText??`${String(t).padStart(3,`0`)}-${e.label}`,range:y,insertTextRules:e.kind===`snippet`?l.CompletionItemInsertTextRule.InsertAsSnippet:void 0})),S=N({filePath:i,language:e.getLanguageId(),lineNumber:t.lineNumber,column:t.column,versionId:e.getVersionId(),triggerCharacter:n.triggerCharacter,linePrefix:u,suffix:c}),C=g.current.get(S);return C&&C.expiresAt>Date.now()?{suggestions:x(C.items)}:await new Promise(a=>{let l=!1,u=()=>{},m=null,h,_=e=>{l||(l=!0,u(),h!==void 0&&window.clearTimeout(h),m?.dispose(),a({suggestions:e}))};u=b.on(`completion.result`,e=>{let t=e;t.payload.requestId===p&&(g.current.set(S,{expiresAt:Date.now()+O,items:t.payload.items}),_(x(t.payload.items)))}),h=window.setTimeout(()=>_([]),D),m=r.onCancellationRequested(()=>_([])),b.requestCompletion({requestId:p,filePath:i,language:e.getLanguageId(),lineNumber:t.lineNumber,column:t.column,content:o.length<=5e5?o:void 0,prefix:s,suffix:c,triggerCharacter:n.triggerCharacter,triggerKind:n.triggerKind,allowLlm:M(f,d)})})}}));return()=>{e.forEach(e=>{e.dispose()})}},[]);let H=(0,P.useCallback)(()=>{let e=u.current;if(!e)return null;let t=e.getSelection();if(!t||t.isEmpty())return null;let n=e.getModel();if(!n)return null;let r=n.getValueInRange(t);return r.trim()?{content:r,startLine:t.startLineNumber,endLine:t.endLineNumber}:null},[]),U=(0,P.useCallback)(()=>{y(`chat`),requestAnimationFrame(()=>{document.querySelector(`textarea[placeholder*="agent"], textarea[placeholder*="follow-up"]`)?.focus()})},[]),W=(0,P.useCallback)(()=>{let e=m.current;if(!e)return;let t=H();t&&(x.getState().addRef({kind:`snippet`,path:e,startLine:t.startLine,endLine:t.endLine,content:t.content}),U())},[H,U]),G=(0,P.useCallback)(()=>{let e=m.current;e&&(x.getState().addRef({kind:`file`,path:e}),U())},[U]),K=(0,P.useCallback)(t=>{u.current=t,p.setTheme(S()),t.onDidChangeCursorSelection(()=>{let e=t.getSelection();V(!!e&&!e.isEmpty())}),t.addAction({id:`wrongstack-send-to-chat`,label:e(`activity:codeEditor.sendSelectionAction`),contextMenuGroupId:`wrongstack`,contextMenuOrder:0,precondition:void 0,keybindings:[f.CtrlCmd|f.Shift|c.KeyL],run:e=>{let t=e.getSelection();t&&!t.isEmpty()?W():G()}})},[W,G]),q=(0,P.useCallback)(e=>{n&&e!==void 0&&i(n,e)},[n,i]);return(0,P.useEffect)(()=>{let e=e=>{let t=e.ctrlKey||e.metaKey,r=e.target?.tagName?.toLowerCase()===`textarea`||e.target?.closest(`.monaco-editor`)!==null;!t||!r||(e.key.toLowerCase()===`s`&&(e.preventDefault(),window.dispatchEvent(new CustomEvent(`wrongstack:save-file`,{detail:{filePath:n}}))),e.key.toLowerCase()===`w`&&(e.preventDefault(),n&&v.getState().closeFile(n)))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[n]),t.length===0?(0,F.jsx)(`div`,{className:`flex h-full min-w-0 items-center justify-center`,children:(0,F.jsxs)(`div`,{className:`text-center space-y-2`,children:[(0,F.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:e(`activity:codeEditor.noFilesOpen`)}),(0,F.jsx)(`p`,{className:`text-[11px] text-muted-foreground/75`,children:e(`activity:codeEditor.selectToEdit`)})]})}):(0,F.jsxs)(`div`,{className:`flex h-full min-w-0 flex-col overflow-hidden`,children:[(0,F.jsx)(L,{}),(0,F.jsxs)(`div`,{className:`relative min-h-0 min-w-0 flex-1 overflow-hidden`,children:[(B||C)&&(0,F.jsx)(`div`,{className:`absolute top-2 right-2 z-10 flex items-center gap-1 rounded-lg border border-border bg-popover/95 backdrop-blur shadow-md p-1`,children:(0,F.jsxs)(`button`,{type:`button`,onClick:B?W:G,className:`inline-flex items-center gap-1.5 rounded-md px-2 py-1 text-[11px] text-foreground hover:bg-accent transition-colors`,title:e(B?`activity:codeEditor.sendSelectedTitle`:`activity:codeEditor.mentionFileTitle`),children:[B?(0,F.jsx)(a,{className:`h-3 w-3`}):(0,F.jsx)(r,{className:`h-3 w-3`}),(0,F.jsx)(`span`,{children:e(B?`activity:codeEditor.sendToChat`:`activity:codeEditor.mentionFile`)})]})}),C?(0,F.jsx)(d,{language:R,value:C.content,onChange:q,theme:z,onMount:K,loading:(0,F.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,F.jsx)(`span`,{className:`text-[11px] text-muted-foreground animate-pulse`,children:e(`activity:codeEditor.loadingEditor`)})}),options:{minimap:{enabled:!1},fontSize:13,fontFamily:`'IBM Plex Mono', 'Cascadia Code', 'Fira Code', 'JetBrains Mono', monospace`,lineNumbers:`on`,renderWhitespace:`selection`,scrollBeyondLastLine:!1,wordWrap:`off`,tabSize:2,smoothScrolling:!0,cursorBlinking:`smooth`,cursorSmoothCaretAnimation:`on`,bracketPairColorization:{enabled:!0},"semanticHighlighting.enabled":!0,automaticLayout:!0,padding:{top:8}}},C.path):(0,F.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,F.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:e(`activity:codeEditor.selectTab`)})})]})]})}export{R as CodeEditor};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{m as t,p as n}from"./markdown-BRAejDWd.js";import{$n as r,At as i,Bt as a,Lr as o,Rn as s,Xr as c,_i as l,ci as u,fr as d,li as f,lt as p,mi as m}from"./vendor-C9iFsXuW.js";import"./i18n-ClFSbktB.js";var h=e(t(),1),g=n();function _({title:e,value:t,subtitle:n,icon:r,color:i=`text-primary`,trend:a}){let{t:o}=m();return(0,g.jsxs)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:[(0,g.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,g.jsxs)(`div`,{className:`min-w-0`,children:[(0,g.jsx)(`p`,{className:`text-xs text-muted-foreground font-medium`,children:e}),(0,g.jsx)(`p`,{className:`mt-1 truncate text-xl font-semibold tabular-nums sm:text-2xl ${i}`,children:t}),n&&(0,g.jsx)(`p`,{className:`text-xs text-muted-foreground mt-1`,children:n})]}),(0,g.jsx)(`div`,{className:`shrink-0 rounded-lg bg-muted/70 p-2 ${i}`,children:(0,g.jsx)(r,{className:`w-5 h-5`})})]}),a&&(0,g.jsxs)(`div`,{className:`mt-2 flex items-center gap-1`,children:[a===`up`&&(0,g.jsx)(p,{className:`w-3 h-3 text-success`}),a===`down`&&(0,g.jsx)(p,{className:`w-3 h-3 rotate-180 text-destructive`}),(0,g.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:o(a===`up`?`activity:debug.trendUp`:a===`down`?`activity:debug.trendDown`:`activity:debug.trendStable`)})]})]})}function v(){let{t:e}=m(),[t,n]=(0,h.useState)({fileWatcher:null,system:null,lastUpdated:null,error:null}),[v,x]=(0,h.useState)(!0),[S,C]=(0,h.useState)(2e3),w=(0,h.useCallback)(async()=>{try{let e=await fetch(`/debug/watcher-metrics`),t=null,r=e.headers.get(`content-type`)??``;e.ok&&r.includes(`application/json`)&&(t=await e.json());let i={memoryUsage:{heapUsed:performance.memory?.usedJSHeapSize??0,heapTotal:performance.memory?.totalJSHeapSize??0,external:0,rss:0,arrayBuffers:0},uptime:performance.timeOrigin?performance.now()/1e3:0,cpuUsage:{user:0,system:0}};n({fileWatcher:t,system:i,lastUpdated:new Date,error:null})}catch(e){n(t=>({...t,error:e instanceof Error?e.message:l.t(`activity:debug.fetchFailed`)}))}finally{x(!1)}},[]);return(0,h.useEffect)(()=>{w();let e=setInterval(w,S);return()=>clearInterval(e)},[w,S]),(0,g.jsx)(`div`,{className:`h-full min-h-0 min-w-0 flex-1 overflow-y-auto bg-[hsl(var(--surface-2)/0.45)] p-4 sm:p-6`,children:(0,g.jsxs)(`div`,{className:`mx-auto flex max-w-7xl flex-col gap-5`,children:[(0,g.jsx)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:(0,g.jsxs)(`div`,{className:`flex flex-col gap-4 lg:flex-row lg:items-center lg:justify-between`,children:[(0,g.jsxs)(`div`,{className:`min-w-0`,children:[(0,g.jsxs)(`h1`,{className:`flex items-center gap-2 text-lg font-semibold sm:text-xl`,children:[(0,g.jsx)(f,{className:`h-5 w-5 text-primary`}),e(`activity:debug.heading`)]}),(0,g.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:e(`activity:debug.subtitle`)})]}),(0,g.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row sm:items-center`,children:[(0,g.jsxs)(`label`,{className:`flex min-w-0 items-center gap-2 text-sm`,children:[(0,g.jsx)(a,{className:`w-4 h-4 text-muted-foreground`}),(0,g.jsx)(`span`,{className:`shrink-0 text-muted-foreground`,children:e(`activity:debug.refreshLabel`)}),(0,g.jsxs)(`select`,{value:S,onChange:e=>C(Number(e.target.value)),className:`h-9 rounded-md border border-border/70 bg-background/70 px-2 text-sm`,children:[(0,g.jsx)(`option`,{value:1e3,children:`1s`}),(0,g.jsx)(`option`,{value:2e3,children:`2s`}),(0,g.jsx)(`option`,{value:5e3,children:`5s`}),(0,g.jsx)(`option`,{value:1e4,children:`10s`})]})]}),(0,g.jsxs)(`button`,{type:`button`,onClick:()=>{x(!0),w()},disabled:v,className:`inline-flex h-9 items-center justify-center gap-2 rounded-md bg-primary px-3 text-sm font-medium text-primary-foreground shadow-sm shadow-primary/15 hover:bg-primary/90 disabled:opacity-50`,children:[(0,g.jsx)(a,{className:`w-4 h-4 ${v?`animate-spin`:``}`}),e(`common:action.refresh`)]})]})]})}),t.lastUpdated&&(0,g.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border border-border/60 bg-card/55 px-3 py-2 text-sm text-muted-foreground`,children:[(0,g.jsx)(d,{className:`w-4 h-4`}),e(`activity:debug.lastUpdated`,{time:t.lastUpdated.toLocaleTimeString()})]}),t.error&&(0,g.jsxs)(`div`,{className:`flex items-center gap-3 rounded-xl border border-destructive/25 bg-destructive/10 p-4 text-destructive`,children:[(0,g.jsx)(u,{className:`w-5 h-5 flex-shrink-0`}),(0,g.jsxs)(`div`,{children:[(0,g.jsx)(`p`,{className:`font-medium`,children:e(`activity:debug.fetchFailed`)}),(0,g.jsx)(`p`,{className:`text-sm opacity-80`,children:t.error})]})]}),(0,g.jsxs)(`section`,{children:[(0,g.jsxs)(`h2`,{className:`mb-3 flex items-center gap-2 text-sm font-semibold text-muted-foreground`,children:[(0,g.jsx)(r,{className:`h-4 w-4 text-primary`}),e(`activity:debug.fileWatcher`)]}),(0,g.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4`,children:[(0,g.jsx)(_,{title:e(`activity:debug.watcherStatus`),value:t.fileWatcher?.watcherActive?e(`activity:debug.running`):e(`activity:debug.stopped`),icon:i,color:t.fileWatcher?.watcherActive?`text-success`:`text-destructive`}),(0,g.jsx)(_,{title:e(`activity:debug.activeProjects`),value:t.fileWatcher?.activeProjects??0,subtitle:e(`activity:debug.projectsWatched`),icon:c,color:`text-primary`}),(0,g.jsx)(_,{title:e(`activity:debug.fileChanges`),value:t.fileWatcher?.fileChangesDetected??0,subtitle:e(`activity:debug.totalDetected`),icon:o,color:`text-primary`,trend:`neutral`}),(0,g.jsx)(_,{title:e(`activity:debug.filesProcessed`),value:t.fileWatcher?.filesProcessed??0,subtitle:e(`activity:debug.afterHash`),icon:s,color:`text-success`})]}),(0,g.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4 mt-4`,children:[(0,g.jsx)(_,{title:e(`activity:debug.broadcastsSent`),value:t.fileWatcher?.broadcastsSent??0,subtitle:e(`activity:debug.toClients`),icon:p,color:`text-success`}),(0,g.jsx)(_,{title:e(`activity:debug.debounceResets`),value:t.fileWatcher?.debounceResets??0,subtitle:e(`activity:debug.rapidWrites`),icon:a,color:`text-warning`}),(0,g.jsx)(_,{title:e(`activity:debug.avgDebounce`),value:`${(t.fileWatcher?.averageDebounceDelayMs??0).toFixed(1)}ms`,subtitle:e(`activity:debug.actualDelay`),icon:d,color:`text-warning`}),(0,g.jsx)(_,{title:e(`activity:debug.totalDelay`),value:`${(t.fileWatcher?.totalDebounceDelayMs??0).toFixed(0)}ms`,subtitle:e(`activity:debug.sumDelays`),icon:f,color:`text-primary`})]})]}),(0,g.jsxs)(`section`,{children:[(0,g.jsxs)(`h2`,{className:`mb-3 flex items-center gap-2 text-sm font-semibold text-muted-foreground`,children:[(0,g.jsx)(s,{className:`h-4 w-4 text-primary`}),e(`activity:debug.browserPerf`)]}),(0,g.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-3 gap-4`,children:[(0,g.jsx)(_,{title:e(`activity:debug.heapUsed`),value:y(t.system?.memoryUsage?.heapUsed??0),subtitle:e(`activity:debug.jsHeap`),icon:f,color:`text-primary`}),(0,g.jsx)(_,{title:e(`activity:debug.heapTotal`),value:y(t.system?.memoryUsage?.heapTotal??0),subtitle:e(`activity:debug.totalHeap`),icon:f,color:`text-success`}),(0,g.jsx)(_,{title:e(`activity:debug.pageUptime`),value:b(t.system?.uptime??0),subtitle:e(`activity:debug.sinceLoad`),icon:d,color:`text-primary`})]})]}),(0,g.jsxs)(`section`,{children:[(0,g.jsxs)(`h2`,{className:`mb-3 flex items-center gap-2 text-sm font-semibold text-muted-foreground`,children:[(0,g.jsx)(o,{className:`h-4 w-4 text-primary`}),e(`activity:debug.rawData`)]}),(0,g.jsx)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:(0,g.jsx)(`pre`,{className:`overflow-x-auto text-xs font-mono text-muted-foreground`,children:JSON.stringify({fileWatcher:t.fileWatcher,browserMemory:t.system?.memoryUsage,pageUptime:t.system?.uptime},null,2)})})]})]})})}function y(e){if(e===0)return`0 B`;let t=1024,n=[`B`,`KB`,`MB`,`GB`],r=Math.floor(Math.log(e)/Math.log(t));return`${(e/t**r).toFixed(1)} ${n[r]}`}function b(e){return e<60?`${e.toFixed(0)}s`:e<3600?`${(e/60).toFixed(1)}m`:`${(e/3600).toFixed(1)}h`}export{v as DebugDashboard};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{m as t,p as n}from"./markdown-D0X23O-i.js";import{Mt as r,Qt as i,Tt as a,Z as o,br as s,fi as c,hi as l,tr as u}from"./vendor-CyLvG8N0.js";import"./i18n-CkkVJCs9.js";import{t as d}from"./utils-CU_o9ioU.js";import{C as f,T as p}from"./index-BqAVsSCe.js";var m=e(t(),1);function h(e,t,n){return e<t?t:e>n?n:e}function g(e){let t=/^oklch\(\s*([^)]+)\)$/i.exec(e.trim());if(!t?.[1])return null;let n=(t[1].split(`/`)[0]??``).trim().split(/\s+/);if(n.length<3||!n[0]||!n[1]||!n[2])return null;let r=n[0].endsWith(`%`)?Number.parseFloat(n[0])/100:Number.parseFloat(n[0]),i=n[1].endsWith(`%`)?Number.parseFloat(n[1])/100*.4:Number.parseFloat(n[1]),a=Number.parseFloat(n[2].replace(/deg$/i,``));return[r,i,a].every(Number.isFinite)?[h(r,0,1),Math.max(0,i),a]:null}function _(e){return h(e<=.0031308?12.92*e:1.055*e**(1/2.4)-.055,0,1)}function v(e){return Math.round(e*255).toString(16).padStart(2,`0`)}function y(e){let t=g(e);if(!t)return null;let[n,r,i]=t,a=i*Math.PI/180,o=r*Math.cos(a),s=r*Math.sin(a),c=n+.3963377774*o+.2158037573*s,l=n-.1055613458*o-.0638541728*s,u=n-.0894841775*o-1.291485548*s,d=c**3,f=l**3,p=u**3,m=4.0767416621*d-3.3077115913*f+.2309699292*p,h=-1.2684380046*d+2.6097574011*f-.3413193965*p,y=-.0041960863*d-.7034186147*f+1.707614701*p;return`#${v(_(m))}${v(_(h))}${v(_(y))}`}function b(e){let t=e.trim(),n=y(t);if(n)return n.toLowerCase();let r=/^#([0-9a-f]{6})([0-9a-f]{2})?$/i.exec(t);if(r?.[1])return`#${r[1].toLowerCase()}`;let i=/^#([0-9a-f]{3})$/i.exec(t);return i?.[1]?`#${i[1].split(``).map(e=>e+e).join(``).toLowerCase()}`:null}var x=n(),S=[`web`,`react-native`,`flutter`,`swiftui`,`compose`],C=[`primary`,`accent`,`bg`,`surface`,`fg`,`border`];function w(e,t,n){let r={...e};for(let[e,i]of Object.entries(t))e.startsWith(`light.`)?n===`light`&&(r[e.slice(6)]=i):e.startsWith(`dark.`)?n===`dark`&&(r[e.slice(5)]=i):r[e]=i;return r}function T({t:e,label:t}){let n=e.bg??`#fff`,r=e.surface??n,i=e.fg??`#111`,a=e.muted??i,o=e.primary??`#3b82f6`,s=e.accent??o,c=e.border??a,l=e.radius??`0.5rem`,u=e.fontSans??`system-ui, sans-serif`,d=e.fontDisplay??u,f=e.shadow&&e.shadow!==`none`?e.shadow:void 0;return(0,x.jsxs)(`div`,{style:{background:n,color:i,fontFamily:u},className:`flex min-w-0 flex-col gap-2 overflow-hidden p-3`,children:[(0,x.jsx)(`div`,{className:`text-[9px] uppercase tracking-wide`,style:{color:a},children:t}),(0,x.jsxs)(`div`,{style:{background:r,border:`1px solid ${c}`,borderRadius:l,boxShadow:f},className:`flex min-w-0 flex-col gap-2 p-3`,children:[(0,x.jsx)(`div`,{style:{fontFamily:d},className:`text-base font-bold leading-tight`,children:`Aa Heading`}),(0,x.jsx)(`div`,{className:`text-[11px] leading-snug`,style:{color:a},children:`The quick brown fox jumps over the lazy dog.`}),(0,x.jsxs)(`div`,{className:`mt-1 flex min-w-0 items-center gap-1.5`,children:[(0,x.jsx)(`span`,{style:{background:o,color:n,borderRadius:l},className:`shrink-0 px-2.5 py-1 text-[10px] font-semibold`,children:`Primary`}),(0,x.jsx)(`span`,{style:{border:`1px solid ${c}`,color:i,borderRadius:l},className:`shrink-0 px-2 py-1 text-[10px]`,children:`Ghost`}),(0,x.jsx)(`span`,{style:{background:s,color:n,borderRadius:`999px`},className:`ml-auto shrink-0 px-2 py-0.5 text-[9px] font-semibold`,children:`Badge`})]}),(0,x.jsx)(`div`,{style:{border:`1px solid ${c}`,borderRadius:l,color:a},className:`text-[10px] px-2 py-1.5 mt-1`,children:`Input field…`})]})]})}function E({kit:e,overrides:t,onSet:n}){let[r,i]=(0,m.useState)(`light`),{t:a}=c(),o=w(r===`light`?e.light:e.dark,t,r);return(0,x.jsxs)(`div`,{className:`mt-1 rounded-lg border border-border/60 p-2 bg-muted/30`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-2 mb-1.5`,children:[(0,x.jsx)(`span`,{className:`text-[10px] font-semibold uppercase text-muted-foreground`,children:a(`activity:design.colors`)}),(0,x.jsx)(`div`,{className:`ml-auto inline-flex rounded border border-border/60 overflow-hidden`,children:[`light`,`dark`].map(e=>(0,x.jsx)(`button`,{type:`button`,onClick:()=>i(e),className:d(`text-[10px] px-1.5 py-0.5`,r===e?`bg-primary text-primary-foreground`:`text-muted-foreground`),children:e},e))})]}),(0,x.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:C.filter(e=>o[e]).map(e=>{let t=b(o[e]??``)??`#000000`;return(0,x.jsxs)(`label`,{className:`flex min-w-[2rem] flex-col items-center gap-0.5`,title:`${e}: ${o[e]}`,children:[(0,x.jsx)(`input`,{type:`color`,value:t,onChange:t=>n(`${r}.${e}`,t.target.value),className:`w-6 h-6 rounded cursor-pointer bg-transparent border border-border/60 p-0`}),(0,x.jsx)(`span`,{className:`text-[8px] text-muted-foreground`,children:e})]},e)})})]})}function D({className:e}){let{client:t}=f(),{t:n}=c(),[h,g]=(0,m.useState)([]),[_,v]=(0,m.useState)(null),[y,b]=(0,m.useState)({}),[C,D]=(0,m.useState)(`web`),[O,k]=(0,m.useState)(``),[A,j]=(0,m.useState)(null);(0,m.useEffect)(()=>{if(!t)return;let e=e=>{let t=e.payload;g(t?.kits??[]),v(t?.activeKit??null),b(t?.overrides??{})},n=e=>{let t=e.payload;t?.ok&&t.kit&&(v(t.kit),b(t.overrides??{}))},r=e=>{let t=e.payload;t?.ok&&t.overrides&&b(t.overrides)},i=e=>{let t=e.payload;j(t?.ok?l.t(`activity:design.wrote`,{path:t.path}):l.t(`activity:design.materializeFailed`,{error:t?.error??`error`}))},a=e=>{let t=e.payload;if(!t?.ok){j(l.t(`activity:design.verifyError`,{error:t?.error??`error`}));return}let n=Math.round((t.score??1)*100);j(t.violationCount?l.t(`activity:design.verifyOffPalette`,{pct:n,count:t.violationCount,files:t.filesScanned}):l.t(`activity:design.verifyClean`,{files:t.filesScanned}))};return t.on(`design.list`,e),t.on(`design.use`,n),t.on(`design.set`,r),t.on(`design.materialize`,i),t.on(`design.verify`,a),t.send({type:`design.list`}),()=>{t.off(`design.list`,e),t.off(`design.use`,n),t.off(`design.set`,r),t.off(`design.materialize`,i),t.off(`design.verify`,a)}},[t]);let M=(0,m.useCallback)(e=>t?.send({type:`design.use`,payload:{kit:e,stack:C}}),[t,C]),N=(0,m.useCallback)((e,n)=>{b(t=>({...t,[e]:n})),t?.send({type:`design.set`,payload:{overrides:{[e]:n}}})},[t]),P=(0,m.useCallback)(()=>{j(l.t(`activity:design.writing`)),t?.send({type:`design.materialize`,payload:{stack:C}})},[t,C]),F=(0,m.useCallback)(()=>{j(l.t(`activity:design.scanning`)),t?.send({type:`design.verify`})},[t]),I=(0,m.useMemo)(()=>{let e=O.trim().toLowerCase();return[...e?h.filter(t=>t.id.includes(e)||t.name.toLowerCase().includes(e)||t.aesthetic.toLowerCase().includes(e)||t.tags.some(t=>t.includes(e))):h].sort((e,t)=>e.name.localeCompare(t.name))},[h,O]);return(0,x.jsxs)(`div`,{className:d(`flex h-full min-h-0 min-w-0 flex-col overflow-hidden bg-[hsl(var(--surface-2)/0.45)]`,e),children:[(0,x.jsx)(`div`,{className:`border-b border-border/60 p-3`,children:(0,x.jsx)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-3 shadow-sm`,children:(0,x.jsxs)(`div`,{className:`flex flex-col gap-3 lg:flex-row lg:items-center`,children:[(0,x.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,x.jsx)(`span`,{className:`flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-primary/10 text-primary`,children:(0,x.jsx)(i,{className:`h-4 w-4`})}),(0,x.jsxs)(`div`,{className:`min-w-0`,children:[(0,x.jsx)(`h2`,{className:`truncate text-sm font-semibold`,children:n(`activity:design.heading`)}),(0,x.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:n(`activity:design.kitsCount`,{count:I.length})})]})]}),(0,x.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-2 sm:flex-row sm:items-center lg:justify-end`,children:[(0,x.jsxs)(`label`,{className:`relative min-w-0 flex-1 sm:max-w-xs`,children:[(0,x.jsx)(r,{className:`pointer-events-none absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground/70`}),(0,x.jsx)(`input`,{value:O,onChange:e=>k(e.target.value),placeholder:n(`activity:design.searchPlaceholder`),className:`h-9 w-full rounded-md border border-border/70 bg-background/70 pl-8 pr-3 text-sm shadow-sm outline-none transition focus:border-primary/40 focus:ring-2 focus:ring-ring/30`})]}),(0,x.jsx)(`select`,{value:C,onChange:e=>D(e.target.value),className:`h-9 rounded-md border border-border/70 bg-background/70 px-2 text-sm shadow-sm`,title:n(`activity:design.stackTitle`),children:S.map(e=>(0,x.jsx)(`option`,{value:e,children:e},e))}),A&&(0,x.jsx)(`span`,{className:`min-w-0 truncate rounded-md border border-border/60 bg-muted/40 px-2 py-1 text-[11px] text-muted-foreground sm:max-w-56`,children:A}),(0,x.jsx)(`button`,{type:`button`,onClick:()=>p(`chat`),className:`inline-flex h-9 w-9 shrink-0 items-center justify-center rounded-md text-muted-foreground hover:bg-muted hover:text-foreground`,title:n(`common:action.close`),children:(0,x.jsx)(o,{className:`h-4 w-4`})})]})]})})}),(0,x.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto p-3 sm:p-4`,children:I.length===0?(0,x.jsxs)(`div`,{className:`ws-surface mx-auto mt-8 flex max-w-md flex-col items-center gap-3 rounded-xl p-6 text-center text-muted-foreground`,children:[(0,x.jsx)(i,{className:`h-8 w-8 text-primary/60`}),(0,x.jsx)(`p`,{className:`text-sm font-medium text-foreground`,children:n(`activity:design.kitsCount`,{count:0})}),(0,x.jsx)(`p`,{className:`text-xs`,children:n(`activity:design.searchPlaceholder`)})]}):(0,x.jsx)(`div`,{className:`grid gap-4 [grid-template-columns:repeat(auto-fill,minmax(min(100%,20rem),1fr))]`,children:I.map(e=>{let t=_===e.id,r=t?y:{};return(0,x.jsxs)(`div`,{className:d(`flex min-w-0 flex-col overflow-hidden rounded-xl border bg-card/75 shadow-sm`,t?`border-primary/60 ring-1 ring-primary/30`:`border-border/70`),children:[(0,x.jsxs)(`div`,{className:`grid min-h-[12rem] grid-cols-1 sm:grid-cols-2`,children:[(0,x.jsx)(T,{t:w(e.light,r,`light`),label:n(`activity:designStudio.light`)}),(0,x.jsx)(T,{t:w(e.dark,r,`dark`),label:n(`activity:designStudio.dark`)})]}),(0,x.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-2 border-t border-border/60 bg-card p-3`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,x.jsx)(`h3`,{className:`text-sm font-semibold truncate`,children:e.name}),(0,x.jsx)(`code`,{className:`text-[10px] text-muted-foreground`,children:e.id}),t&&(0,x.jsxs)(`span`,{className:`inline-flex items-center gap-0.5 text-[9px] font-semibold uppercase text-primary ml-auto`,children:[(0,x.jsx)(s,{className:`w-3 h-3`}),` `,n(`activity:design.active`)]})]}),(0,x.jsx)(`p`,{className:`text-[11px] text-muted-foreground leading-snug`,children:e.aesthetic}),(0,x.jsxs)(`div`,{className:`mt-1 flex min-w-0 flex-wrap items-center gap-2`,children:[(0,x.jsx)(`button`,{type:`button`,onClick:()=>M(e.id),className:d(`rounded-md px-2.5 py-1 text-[11px] font-medium transition`,t?`bg-primary/10 text-primary`:`bg-primary text-primary-foreground hover:opacity-90`),children:n(t?`activity:design.reapply`:`activity:design.use`)}),t&&(0,x.jsxs)(`button`,{type:`button`,onClick:P,className:`inline-flex items-center gap-1 rounded-md border border-border/60 px-2 py-1 text-[11px] font-medium hover:bg-muted`,title:n(`activity:design.materializeTitle`,{stack:C}),children:[(0,x.jsx)(u,{className:`w-3 h-3`}),` `,n(`activity:design.materialize`)]}),t&&(0,x.jsxs)(`button`,{type:`button`,onClick:F,className:`inline-flex items-center gap-1 rounded-md border border-border/60 px-2 py-1 text-[11px] font-medium hover:bg-muted`,title:n(`activity:design.verifyTitle`),children:[(0,x.jsx)(a,{className:`w-3 h-3`}),` `,n(`activity:design.verify`)]}),(0,x.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[10px] text-muted-foreground`,children:e.bestFor})]}),t&&(0,x.jsx)(E,{kit:e,overrides:r,onSet:N})]})]},e.id)})})})]})}export{D as DesignGalleryView};
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{m as t,p as n}from"./markdown-BRAejDWd.js";import{Mt as r,Qt as i,Sr as a,Tt as o,Z as s,_i as c,mi as l,rr as u}from"./vendor-C9iFsXuW.js";import"./i18n-ClFSbktB.js";import{t as d}from"./utils-Bl7Yr7Bw.js";import{N as f,j as p}from"./index-DGwt4pL3.js";var m=e(t(),1);function h(e,t,n){return e<t?t:e>n?n:e}function g(e){let t=/^oklch\(\s*([^)]+)\)$/i.exec(e.trim());if(!t?.[1])return null;let n=(t[1].split(`/`)[0]??``).trim().split(/\s+/);if(n.length<3||!n[0]||!n[1]||!n[2])return null;let r=n[0].endsWith(`%`)?Number.parseFloat(n[0])/100:Number.parseFloat(n[0]),i=n[1].endsWith(`%`)?Number.parseFloat(n[1])/100*.4:Number.parseFloat(n[1]),a=Number.parseFloat(n[2].replace(/deg$/i,``));return[r,i,a].every(Number.isFinite)?[h(r,0,1),Math.max(0,i),a]:null}function _(e){return h(e<=.0031308?12.92*e:1.055*e**(1/2.4)-.055,0,1)}function v(e){return Math.round(e*255).toString(16).padStart(2,`0`)}function y(e){let t=g(e);if(!t)return null;let[n,r,i]=t,a=i*Math.PI/180,o=r*Math.cos(a),s=r*Math.sin(a),c=n+.3963377774*o+.2158037573*s,l=n-.1055613458*o-.0638541728*s,u=n-.0894841775*o-1.291485548*s,d=c**3,f=l**3,p=u**3,m=4.0767416621*d-3.3077115913*f+.2309699292*p,h=-1.2684380046*d+2.6097574011*f-.3413193965*p,y=-.0041960863*d-.7034186147*f+1.707614701*p;return`#${v(_(m))}${v(_(h))}${v(_(y))}`}function b(e){let t=e.trim(),n=y(t);if(n)return n.toLowerCase();let r=/^#([0-9a-f]{6})([0-9a-f]{2})?$/i.exec(t);if(r?.[1])return`#${r[1].toLowerCase()}`;let i=/^#([0-9a-f]{3})$/i.exec(t);return i?.[1]?`#${i[1].split(``).map(e=>e+e).join(``).toLowerCase()}`:null}var x=n(),S=[`web`,`react-native`,`flutter`,`swiftui`,`compose`],C=[`primary`,`accent`,`bg`,`surface`,`fg`,`border`];function w(e,t,n){let r={...e};for(let[e,i]of Object.entries(t))e.startsWith(`light.`)?n===`light`&&(r[e.slice(6)]=i):e.startsWith(`dark.`)?n===`dark`&&(r[e.slice(5)]=i):r[e]=i;return r}function T({t:e,label:t}){let n=e.bg??`#fff`,r=e.surface??n,i=e.fg??`#111`,a=e.muted??i,o=e.primary??`#3b82f6`,s=e.accent??o,c=e.border??a,l=e.radius??`0.5rem`,u=e.fontSans??`system-ui, sans-serif`,d=e.fontDisplay??u,f=e.shadow&&e.shadow!==`none`?e.shadow:void 0;return(0,x.jsxs)(`div`,{style:{background:n,color:i,fontFamily:u},className:`flex min-w-0 flex-col gap-2 overflow-hidden p-3`,children:[(0,x.jsx)(`div`,{className:`text-[9px] uppercase tracking-wide`,style:{color:a},children:t}),(0,x.jsxs)(`div`,{style:{background:r,border:`1px solid ${c}`,borderRadius:l,boxShadow:f},className:`flex min-w-0 flex-col gap-2 p-3`,children:[(0,x.jsx)(`div`,{style:{fontFamily:d},className:`text-base font-bold leading-tight`,children:`Aa Heading`}),(0,x.jsx)(`div`,{className:`text-[11px] leading-snug`,style:{color:a},children:`The quick brown fox jumps over the lazy dog.`}),(0,x.jsxs)(`div`,{className:`mt-1 flex min-w-0 items-center gap-1.5`,children:[(0,x.jsx)(`span`,{style:{background:o,color:n,borderRadius:l},className:`shrink-0 px-2.5 py-1 text-[10px] font-semibold`,children:`Primary`}),(0,x.jsx)(`span`,{style:{border:`1px solid ${c}`,color:i,borderRadius:l},className:`shrink-0 px-2 py-1 text-[10px]`,children:`Ghost`}),(0,x.jsx)(`span`,{style:{background:s,color:n,borderRadius:`999px`},className:`ml-auto shrink-0 px-2 py-0.5 text-[9px] font-semibold`,children:`Badge`})]}),(0,x.jsx)(`div`,{style:{border:`1px solid ${c}`,borderRadius:l,color:a},className:`text-[10px] px-2 py-1.5 mt-1`,children:`Input field…`})]})]})}function E({kit:e,overrides:t,onSet:n}){let[r,i]=(0,m.useState)(`light`),{t:a}=l(),o=w(r===`light`?e.light:e.dark,t,r);return(0,x.jsxs)(`div`,{className:`mt-1 rounded-lg border border-border/60 p-2 bg-muted/30`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-2 mb-1.5`,children:[(0,x.jsx)(`span`,{className:`text-[10px] font-semibold uppercase text-muted-foreground`,children:a(`activity:design.colors`)}),(0,x.jsx)(`div`,{className:`ml-auto inline-flex rounded border border-border/60 overflow-hidden`,children:[`light`,`dark`].map(e=>(0,x.jsx)(`button`,{type:`button`,onClick:()=>i(e),className:d(`text-[10px] px-1.5 py-0.5`,r===e?`bg-primary text-primary-foreground`:`text-muted-foreground`),children:e},e))})]}),(0,x.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:C.filter(e=>o[e]).map(e=>{let t=b(o[e]??``)??`#000000`;return(0,x.jsxs)(`label`,{className:`flex min-w-[2rem] flex-col items-center gap-0.5`,title:`${e}: ${o[e]}`,children:[(0,x.jsx)(`input`,{type:`color`,value:t,onChange:t=>n(`${r}.${e}`,t.target.value),className:`w-6 h-6 rounded cursor-pointer bg-transparent border border-border/60 p-0`}),(0,x.jsx)(`span`,{className:`text-[8px] text-muted-foreground`,children:e})]},e)})})]})}function D({className:e}){let{client:t}=p(),{t:n}=l(),[h,g]=(0,m.useState)([]),[_,v]=(0,m.useState)(null),[y,b]=(0,m.useState)({}),[C,D]=(0,m.useState)(`web`),[O,k]=(0,m.useState)(``),[A,j]=(0,m.useState)(null);(0,m.useEffect)(()=>{if(!t)return;let e=e=>{let t=e.payload;g(t?.kits??[]),v(t?.activeKit??null),b(t?.overrides??{})},n=e=>{let t=e.payload;t?.ok&&t.kit&&(v(t.kit),b(t.overrides??{}))},r=e=>{let t=e.payload;t?.ok&&t.overrides&&b(t.overrides)},i=e=>{let t=e.payload;j(t?.ok?c.t(`activity:design.wrote`,{path:t.path}):c.t(`activity:design.materializeFailed`,{error:t?.error??`error`}))},a=e=>{let t=e.payload;if(!t?.ok){j(c.t(`activity:design.verifyError`,{error:t?.error??`error`}));return}let n=Math.round((t.score??1)*100);j(t.violationCount?c.t(`activity:design.verifyOffPalette`,{pct:n,count:t.violationCount,files:t.filesScanned}):c.t(`activity:design.verifyClean`,{files:t.filesScanned}))};return t.on(`design.list`,e),t.on(`design.use`,n),t.on(`design.set`,r),t.on(`design.materialize`,i),t.on(`design.verify`,a),t.send({type:`design.list`}),()=>{t.off(`design.list`,e),t.off(`design.use`,n),t.off(`design.set`,r),t.off(`design.materialize`,i),t.off(`design.verify`,a)}},[t]);let M=(0,m.useCallback)(e=>t?.send({type:`design.use`,payload:{kit:e,stack:C}}),[t,C]),N=(0,m.useCallback)((e,n)=>{b(t=>({...t,[e]:n})),t?.send({type:`design.set`,payload:{overrides:{[e]:n}}})},[t]),P=(0,m.useCallback)(()=>{j(c.t(`activity:design.writing`)),t?.send({type:`design.materialize`,payload:{stack:C}})},[t,C]),F=(0,m.useCallback)(()=>{j(c.t(`activity:design.scanning`)),t?.send({type:`design.verify`})},[t]),I=(0,m.useMemo)(()=>{let e=O.trim().toLowerCase();return[...e?h.filter(t=>t.id.includes(e)||t.name.toLowerCase().includes(e)||t.aesthetic.toLowerCase().includes(e)||t.tags.some(t=>t.includes(e))):h].sort((e,t)=>e.name.localeCompare(t.name))},[h,O]);return(0,x.jsxs)(`div`,{className:d(`flex h-full min-h-0 min-w-0 flex-col overflow-hidden bg-[hsl(var(--surface-2)/0.45)]`,e),children:[(0,x.jsx)(`div`,{className:`border-b border-border/60 p-3`,children:(0,x.jsx)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-3 shadow-sm`,children:(0,x.jsxs)(`div`,{className:`flex flex-col gap-3 lg:flex-row lg:items-center`,children:[(0,x.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,x.jsx)(`span`,{className:`flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-primary/10 text-primary`,children:(0,x.jsx)(i,{className:`h-4 w-4`})}),(0,x.jsxs)(`div`,{className:`min-w-0`,children:[(0,x.jsx)(`h2`,{className:`truncate text-sm font-semibold`,children:n(`activity:design.heading`)}),(0,x.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:n(`activity:design.kitsCount`,{count:I.length})})]})]}),(0,x.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-2 sm:flex-row sm:items-center lg:justify-end`,children:[(0,x.jsxs)(`label`,{className:`relative min-w-0 flex-1 sm:max-w-xs`,children:[(0,x.jsx)(r,{className:`pointer-events-none absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground/70`}),(0,x.jsx)(`input`,{value:O,onChange:e=>k(e.target.value),placeholder:n(`activity:design.searchPlaceholder`),className:`h-9 w-full rounded-md border border-border/70 bg-background/70 pl-8 pr-3 text-sm shadow-sm outline-none transition focus:border-primary/40 focus:ring-2 focus:ring-ring/30`})]}),(0,x.jsx)(`select`,{value:C,onChange:e=>D(e.target.value),className:`h-9 rounded-md border border-border/70 bg-background/70 px-2 text-sm shadow-sm`,title:n(`activity:design.stackTitle`),children:S.map(e=>(0,x.jsx)(`option`,{value:e,children:e},e))}),A&&(0,x.jsx)(`span`,{className:`min-w-0 truncate rounded-md border border-border/60 bg-muted/40 px-2 py-1 text-[11px] text-muted-foreground sm:max-w-56`,children:A}),(0,x.jsx)(`button`,{type:`button`,onClick:()=>f(`chat`),className:`inline-flex h-9 w-9 shrink-0 items-center justify-center rounded-md text-muted-foreground hover:bg-muted hover:text-foreground`,title:n(`common:action.close`),children:(0,x.jsx)(s,{className:`h-4 w-4`})})]})]})})}),(0,x.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto p-3 sm:p-4`,children:I.length===0?(0,x.jsxs)(`div`,{className:`ws-surface mx-auto mt-8 flex max-w-md flex-col items-center gap-3 rounded-xl p-6 text-center text-muted-foreground`,children:[(0,x.jsx)(i,{className:`h-8 w-8 text-primary/60`}),(0,x.jsx)(`p`,{className:`text-sm font-medium text-foreground`,children:n(`activity:design.kitsCount`,{count:0})}),(0,x.jsx)(`p`,{className:`text-xs`,children:n(`activity:design.searchPlaceholder`)})]}):(0,x.jsx)(`div`,{className:`grid gap-4 [grid-template-columns:repeat(auto-fill,minmax(min(100%,20rem),1fr))]`,children:I.map(e=>{let t=_===e.id,r=t?y:{};return(0,x.jsxs)(`div`,{className:d(`flex min-w-0 flex-col overflow-hidden rounded-xl border bg-card/75 shadow-sm`,t?`border-primary/60 ring-1 ring-primary/30`:`border-border/70`),children:[(0,x.jsxs)(`div`,{className:`grid min-h-[12rem] grid-cols-1 sm:grid-cols-2`,children:[(0,x.jsx)(T,{t:w(e.light,r,`light`),label:n(`activity:designStudio.light`)}),(0,x.jsx)(T,{t:w(e.dark,r,`dark`),label:n(`activity:designStudio.dark`)})]}),(0,x.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-2 border-t border-border/60 bg-card p-3`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,x.jsx)(`h3`,{className:`text-sm font-semibold truncate`,children:e.name}),(0,x.jsx)(`code`,{className:`text-[10px] text-muted-foreground`,children:e.id}),t&&(0,x.jsxs)(`span`,{className:`inline-flex items-center gap-0.5 text-[9px] font-semibold uppercase text-primary ml-auto`,children:[(0,x.jsx)(a,{className:`w-3 h-3`}),` `,n(`activity:design.active`)]})]}),(0,x.jsx)(`p`,{className:`text-[11px] text-muted-foreground leading-snug`,children:e.aesthetic}),(0,x.jsxs)(`div`,{className:`mt-1 flex min-w-0 flex-wrap items-center gap-2`,children:[(0,x.jsx)(`button`,{type:`button`,onClick:()=>M(e.id),className:d(`rounded-md px-2.5 py-1 text-[11px] font-medium transition`,t?`bg-primary/10 text-primary`:`bg-primary text-primary-foreground hover:opacity-90`),children:n(t?`activity:design.reapply`:`activity:design.use`)}),t&&(0,x.jsxs)(`button`,{type:`button`,onClick:P,className:`inline-flex items-center gap-1 rounded-md border border-border/60 px-2 py-1 text-[11px] font-medium hover:bg-muted`,title:n(`activity:design.materializeTitle`,{stack:C}),children:[(0,x.jsx)(u,{className:`w-3 h-3`}),` `,n(`activity:design.materialize`)]}),t&&(0,x.jsxs)(`button`,{type:`button`,onClick:F,className:`inline-flex items-center gap-1 rounded-md border border-border/60 px-2 py-1 text-[11px] font-medium hover:bg-muted`,title:n(`activity:design.verifyTitle`),children:[(0,x.jsx)(o,{className:`w-3 h-3`}),` `,n(`activity:design.verify`)]}),(0,x.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[10px] text-muted-foreground`,children:e.bestFor})]}),t&&(0,x.jsx)(E,{kit:e,overrides:r,onSet:N})]})]},e.id)})})})]})}export{D as DesignGalleryView};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{m as t,p as n}from"./markdown-BRAejDWd.js";import{Bt as r,Gt as i,Nr as a,Sr as o,Z as s,at as c,dt as l,jt as u,ti as d,tn as f,ur as p}from"./vendor-C9iFsXuW.js";import{t as m}from"./ws-client-WVS5hdJj.js";import{t as h}from"./utils-Bl7Yr7Bw.js";import{H as g,J as _}from"./index-DGwt4pL3.js";var v=e(t(),1),y=n();function b({onClose:e}){let t=_(e=>e.wsUrl),{boards:n,activeBoardId:o,activeBoard:c,loading:u,error:f,queueHealth:b,setLoading:S,setActiveBoardId:C}=g(),[w,T]=(0,v.useState)(``),[D,O]=(0,v.useState)(``),[k,A]=(0,v.useState)(``),[j,M]=(0,v.useState)(null),[N,P]=(0,v.useState)(null),F=(0,v.useMemo)(()=>m(t),[t]),I=c?.tasks.find(e=>e.id===j)??null,L=(0,v.useMemo)(()=>c?c.tasks.filter(e=>e.status===`in_progress`||e.assignment?.status===`running`||e.assignment?.status===`queued`).reduce((e,t)=>e+(t.costCeilingUsd??0),0):0,[c]),R=(e,t={})=>{S(!0),F.send({type:e,payload:t})},z=()=>R(`kanban.list`),B=(e=o)=>{e&&R(`kanban.get`,{boardId:e})};(0,v.useEffect)(()=>{z()},[]),(0,v.useEffect)(()=>{!o&&n[0]?.id&&(C(n[0].id),R(`kanban.get`,{boardId:n[0].id}))},[n,o,C]),(0,v.useEffect)(()=>{c&&j&&!c.tasks.some(e=>e.id===j)&&M(null)},[c,j]),(0,v.useEffect)(()=>{o&&R(`kanban.health`,{boardId:o})},[o]),(0,v.useEffect)(()=>{if(!o)return;let e=setInterval(()=>{R(`kanban.get`,{boardId:o})},5e3);return()=>clearInterval(e)},[o]);let V=()=>{let e=w.trim();e&&(T(``),R(`kanban.create`,{title:e}))},H=()=>{if(!c)return;let e=D.trim();e&&(O(``),R(`kanban.task.add`,{boardId:c.id,title:e,columnId:c.columns[0]?.id??`backlog`}),window.setTimeout(()=>B(c.id),150))},U=()=>{if(!c)return;let e=k.trim();e&&(A(``),R(`kanban.column.add`,{boardId:c.id,title:e}),window.setTimeout(()=>B(c.id),150))},W=()=>{c&&(R(`kanban.delete`,{boardId:c.id}),window.setTimeout(z,150))},G=()=>{c&&(R(`kanban.duplicate`,{boardId:c.id,title:`${c.title} Copy`}),window.setTimeout(z,150))},K=e=>{c&&(R(`kanban.task.remove`,{boardId:c.id,taskId:e.id}),window.setTimeout(()=>B(c.id),150))},q=(e,t)=>{c&&(R(`kanban.task.move`,{boardId:c.id,taskId:e,columnId:t}),window.setTimeout(()=>B(c.id),150))};return(0,y.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-col bg-background text-foreground md:flex-row`,children:[(0,y.jsxs)(`aside`,{className:`flex max-h-[45dvh] w-full shrink-0 flex-col border-b bg-card/40 md:max-h-none md:w-[280px] md:border-b-0 md:border-r`,children:[(0,y.jsxs)(`div`,{className:`flex h-12 items-center gap-2 border-b px-3`,children:[(0,y.jsx)(`button`,{type:`button`,title:`Back`,onClick:e,className:`flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground hover:bg-muted hover:text-foreground`,children:(0,y.jsx)(a,{size:16})}),(0,y.jsx)(d,{size:17,className:`text-primary`}),(0,y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,y.jsx)(`div`,{className:`truncate text-sm font-semibold`,children:`Kanban`}),(0,y.jsxs)(`div`,{className:`truncate text-[11px] text-muted-foreground`,children:[n.length,` boards`]})]}),(0,y.jsx)(`button`,{type:`button`,title:`Refresh`,onClick:z,className:`flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground hover:bg-muted hover:text-foreground`,children:(0,y.jsx)(r,{size:15,className:u?`animate-spin`:void 0})})]}),(0,y.jsxs)(`div`,{className:`flex gap-1 border-b p-2`,children:[(0,y.jsx)(`input`,{value:w,onChange:e=>T(e.target.value),onKeyDown:e=>{e.key===`Enter`&&V()},placeholder:`New board`,className:`min-w-0 flex-1 rounded-md border bg-background px-2 py-1.5 text-sm outline-none focus:border-primary`}),(0,y.jsx)(`button`,{type:`button`,title:`Create board`,onClick:V,className:`flex h-8 w-8 items-center justify-center rounded-md bg-primary text-primary-foreground hover:bg-primary/90`,children:(0,y.jsx)(i,{size:16})})]}),(0,y.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto p-2`,children:n.map(e=>(0,y.jsxs)(`button`,{type:`button`,onClick:()=>{C(e.id),R(`kanban.get`,{boardId:e.id})},className:h(`mb-1 w-full rounded-md px-2 py-2 text-left transition-colors`,o===e.id?`bg-primary/10 text-foreground`:`text-muted-foreground hover:bg-muted hover:text-foreground`),children:[(0,y.jsx)(`div`,{className:`truncate text-sm font-medium`,children:e.title}),(0,y.jsxs)(`div`,{className:`mt-0.5 flex items-center justify-between text-[11px]`,children:[(0,y.jsxs)(`span`,{children:[e.taskCount,` tasks`]}),(0,y.jsxs)(`span`,{children:[e.completedTaskCount,` done`]})]})]},e.id))})]}),(0,y.jsxs)(`main`,{className:`flex min-h-0 min-w-0 flex-1 flex-col`,children:[(0,y.jsxs)(`header`,{className:`flex min-h-12 shrink-0 flex-wrap items-center gap-2 border-b px-3 py-2 sm:px-4`,children:[(0,y.jsxs)(`div`,{className:`w-full min-w-0 sm:w-auto sm:flex-1`,children:[(0,y.jsx)(`div`,{className:`truncate text-sm font-semibold`,children:c?.title??`No board selected`}),(0,y.jsx)(`div`,{className:`truncate text-[11px] text-muted-foreground`,children:c?`${c.columns.length} columns / ${c.tasks.length} tasks`:`Create or select a board`})]}),c&&(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(`input`,{value:D,onChange:e=>O(e.target.value),onKeyDown:e=>{e.key===`Enter`&&H()},placeholder:`New task`,className:`h-8 w-[calc(100%-2.5rem)] min-w-0 flex-none rounded-md border bg-background px-2 text-sm outline-none focus:border-primary sm:w-56`}),(0,y.jsx)(`button`,{type:`button`,title:`Add task`,onClick:H,className:`flex h-8 w-8 items-center justify-center rounded-md bg-primary text-primary-foreground hover:bg-primary/90`,children:(0,y.jsx)(i,{size:16})}),(0,y.jsx)(`input`,{value:k,onChange:e=>A(e.target.value),onKeyDown:e=>{e.key===`Enter`&&U()},placeholder:`New column`,className:`h-8 w-[calc(100%-2.5rem)] min-w-0 flex-none rounded-md border bg-background px-2 text-sm outline-none focus:border-primary sm:w-44`}),(0,y.jsx)(`button`,{type:`button`,title:`Add column`,onClick:U,className:`hidden h-8 w-8 items-center justify-center rounded-md border text-muted-foreground hover:bg-muted hover:text-foreground sm:flex`,children:(0,y.jsx)(d,{size:16})}),(0,y.jsx)(`button`,{type:`button`,title:`Duplicate board`,onClick:G,className:`flex h-8 w-8 items-center justify-center rounded-md border text-muted-foreground hover:bg-muted hover:text-foreground`,children:(0,y.jsx)(p,{size:16})}),(0,y.jsx)(`button`,{type:`button`,title:`Delete board`,onClick:W,className:`hidden h-8 w-8 items-center justify-center rounded-md border text-muted-foreground hover:bg-destructive/10 hover:text-destructive sm:flex`,children:(0,y.jsx)(l,{size:16})})]})]}),f&&(0,y.jsxs)(`div`,{className:`flex h-9 shrink-0 items-center gap-2 border-b border-destructive/30 bg-destructive/10 px-4 text-sm text-destructive`,children:[(0,y.jsx)(s,{size:15}),(0,y.jsx)(`span`,{className:`truncate`,children:f})]}),(0,y.jsx)(`div`,{className:`kanban-scroll-area min-h-0 flex-1 overflow-x-auto overflow-y-hidden`,children:c?(0,y.jsxs)(y.Fragment,{children:[b&&(0,y.jsxs)(`div`,{className:`flex shrink-0 items-center gap-4 border-b px-4 py-2 text-xs text-muted-foreground`,children:[(0,y.jsx)(`span`,{className:`font-medium text-foreground`,children:`Queue health`}),b.counts.ready>0&&(0,y.jsxs)(`span`,{title:`Claimable tasks`,className:`inline-flex items-center gap-1 text-success`,children:[b.counts.ready,` ready`]}),b.counts.running>0&&(0,y.jsxs)(`span`,{title:`Running assignments`,className:`inline-flex items-center gap-1 text-warning`,children:[b.counts.running,` running`]}),b.counts.review>0&&(0,y.jsxs)(`span`,{title:`In review`,className:`inline-flex items-center gap-1 text-primary`,children:[b.counts.review,` review`]}),b.counts.blocked>0&&(0,y.jsxs)(`span`,{title:`Manually blocked`,className:`inline-flex items-center gap-1 text-destructive`,children:[b.counts.blocked,` blocked`]}),b.counts.failed>0&&(0,y.jsxs)(`span`,{title:`Failed tasks`,className:`inline-flex items-center gap-1 text-destructive`,children:[b.counts.failed,` failed`]}),b.dependencyBlocked.count>0&&(0,y.jsxs)(`span`,{title:`Ready/pending tasks blocked by dependencies`,className:`inline-flex items-center gap-1 rounded bg-warning/10 px-1.5 py-0.5 text-warning`,children:[b.dependencyBlocked.count,` blocked by deps`]}),b.staleAssignments.count>0&&(0,y.jsxs)(`span`,{title:`Expired lease assignments`,className:`inline-flex items-center gap-1 rounded bg-destructive/10 px-1.5 py-0.5 text-destructive`,children:[b.staleAssignments.count,` stale`]}),b.heartbeatDue.count===0&&b.staleAssignments.count===0&&b.dependencyBlocked.count===0&&(0,y.jsx)(`span`,{className:`text-success`,children:`healthy`}),L>0&&(0,y.jsxs)(`span`,{title:`Sum of costCeilingUsd for running/queued tasks`,className:`inline-flex items-center gap-1 text-info`,children:[`~$`,L.toFixed(2),` running cost`]})]}),(0,y.jsx)(`div`,{className:`flex h-full min-w-max gap-3 p-4`,children:[...c.columns].sort((e,t)=>e.order-t.order).map(e=>(0,y.jsx)(x,{board:c,column:e,selectedTaskId:j,dragTaskId:N,setDragTaskId:P,onSelectTask:M,onDeleteTask:K,onMoveTask:q},e.id))})]}):(0,y.jsx)(`div`,{className:`flex h-full items-center justify-center text-sm text-muted-foreground`,children:`No kanban board selected.`})})]}),(0,y.jsx)(E,{boards:n,board:c,task:I,onClose:()=>M(null),sendKanban:R,refreshBoard:B})]})}function x({board:e,column:t,selectedTaskId:n,dragTaskId:r,setDragTaskId:i,onSelectTask:a,onDeleteTask:o,onMoveTask:s}){let c=e.tasks.filter(e=>e.columnId===t.id).sort((e,t)=>e.order-t.order);return(0,y.jsxs)(`section`,{className:h(`flex h-full shrink-0 flex-col rounded-md border bg-muted/25 transition-[width] duration-200`,c.length===0?`w-[180px]`:`w-[310px]`),children:[(0,y.jsxs)(`div`,{className:`flex h-10 shrink-0 items-center gap-2 border-b px-3`,children:[(0,y.jsx)(`span`,{className:`h-2.5 w-2.5 rounded-full`,style:{background:t.color??`hsl(var(--primary))`}}),(0,y.jsx)(`div`,{className:`min-w-0 flex-1 truncate text-sm font-semibold`,children:t.title}),(0,y.jsx)(`span`,{className:`rounded bg-background px-1.5 py-0.5 text-[11px] text-muted-foreground`,children:c.length})]}),(0,y.jsx)(`ul`,{className:`min-h-0 flex-1 space-y-2 overflow-y-auto p-2`,onDragOver:e=>e.preventDefault(),onDrop:e=>{e.preventDefault(),r&&s(r,t.id),i(null)},children:c.map(e=>(0,y.jsxs)(`li`,{draggable:!0,onDragStart:()=>i(e.id),onDragEnd:()=>i(null),className:h(`relative rounded-md border bg-background p-3 shadow-sm transition-colors`,n===e.id?`border-primary`:`hover:border-primary/50`),children:[(0,y.jsx)(`button`,{type:`button`,"aria-label":`Select task: ${e.title}`,onClick:()=>a(e.id),className:`absolute inset-0 cursor-pointer rounded-md`}),(0,y.jsxs)(`div`,{className:`pointer-events-none relative flex items-start gap-2`,children:[(0,y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,y.jsx)(`div`,{className:`line-clamp-2 text-sm font-medium leading-5`,children:e.title}),e.description&&(0,y.jsx)(`div`,{className:`mt-1 line-clamp-2 text-xs leading-4 text-muted-foreground`,children:e.description})]}),(0,y.jsx)(`button`,{type:`button`,title:`Delete task`,"aria-label":`Delete task: ${e.title}`,onClick:()=>o(e),className:`pointer-events-auto relative flex h-7 w-7 shrink-0 items-center justify-center rounded-md text-muted-foreground hover:bg-destructive/10 hover:text-destructive`,children:(0,y.jsx)(l,{size:14})})]}),(0,y.jsxs)(`div`,{className:`pointer-events-none relative mt-2 flex flex-wrap items-center gap-1.5 text-[11px]`,children:[(0,y.jsx)(`span`,{className:M(e.priority),children:e.priority}),(0,y.jsx)(`span`,{className:`rounded bg-muted px-1.5 py-0.5 text-muted-foreground`,children:e.status}),e.assignedAgent&&(0,y.jsx)(`span`,{className:`rounded bg-primary/10 px-1.5 py-0.5 text-primary`,children:e.assignedAgent}),e.assignment?.model&&(0,y.jsx)(`span`,{className:`rounded bg-muted px-1.5 py-0.5 text-muted-foreground`,children:e.assignment.model})]})]},e.id))})]})}var S=[`openai`,`anthropic`,`google`,`groq`,`together`,`fireworks`,`deepseek`,`mistral`,`cohere`,`perplexity`,`xai`,`custom`],C={openai:[`gpt-4o`,`gpt-4o-mini`,`gpt-4-turbo`,`gpt-4`,`gpt-3.5-turbo`,`o1`,`o1-mini`,`o3-mini`],anthropic:[`claude-sonnet-4-20250514`,`claude-sonnet-4`,`claude-3-5-sonnet-latest`,`claude-3-5-haiku-latest`,`claude-opus-4-20250514`,`claude-opus-4`],google:[`gemini-2.0-flash`,`gemini-2.0-flash-lite`,`gemini-1.5-pro`,`gemini-1.5-flash`],groq:[`llama-3.3-70b-versatile`,`llama-3.1-8b-instant`,`mixtral-8x7b-32768`],together:[`mixtral-8x22b`,`llama-3.3-70b`,`deepseek-coder`,`deepseek-r1`],fireworks:[`llama-3.1-405b`,`deepseek-r1`,`mixtral-8x22b`],deepseek:[`deepseek-chat`,`deepseek-reasoner`,`deepseek-r1`],mistral:[`mistral-large-latest`,`mistral-small-latest`,`codestral-latest`],cohere:[`command-r-plus`,`command-r`],perplexity:[`sonar-pro`,`sonar`],xai:[`grok-2`,`grok-2-mini`]},w=[`architect`,`developer`,`reviewer`,`tester`,`verifier`,`security`,`documenter`,`external`,`leader`,`shadow`,`subagent`],T=[`default`,`fast`,`cheap`,`quality`,`balanced`,`experimental`];function E({boards:e,board:t,task:n,onClose:r,sendKanban:i,refreshBoard:a}){let[l,d]=(0,v.useState)(``),[m,g]=(0,v.useState)(``),[_,b]=(0,v.useState)(``),[x,E]=(0,v.useState)(``),[M,N]=(0,v.useState)(``),[P,F]=(0,v.useState)(``),[I,L]=(0,v.useState)([]),[R,z]=(0,v.useState)([]),[B,V]=(0,v.useState)([]),[H,U]=(0,v.useState)(``);(0,v.useEffect)(()=>{d(n?.assignment?.agentId??n?.assignedAgent??``),g(n?.assignment?.name??``),b(n?.assignment?.role??``),E(n?.assignment?.provider??``),N(n?.assignment?.model??``),F(n?.assignment?.fallbackProfile??``),L(n?.assignment?.fallbackModels??[]),z(n?.assignment?.tools??[]),V(n?.assignment?.allowedCapabilities??[]),U(e.find(e=>e.id!==t?.id)?.id??``)},[t?.id,e,n]);let W=()=>({boardId:t?.id,taskId:n?.id,...l.trim()?{agentId:l.trim()}:{},...m.trim()?{name:m.trim()}:{},..._.trim()?{role:_.trim()}:{},...x.trim()?{provider:x.trim()}:{},...M.trim()?{model:M.trim()}:{},...P.trim()?{fallbackProfile:P.trim()}:{},...I.length>0?{fallbackModels:I}:{},...R.length>0?{tools:R}:{},...B.length>0?{allowedCapabilities:B}:{}});return(0,y.jsxs)(`aside`,{className:h(`w-full shrink-0 flex-col border-t bg-card/40 md:w-[340px] md:border-l md:border-t-0`,n?`flex max-h-[42dvh] md:max-h-none`:`hidden md:flex`),children:[(0,y.jsxs)(`div`,{className:`flex h-12 items-center gap-2 border-b px-3`,children:[(0,y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,y.jsx)(`div`,{className:`truncate text-sm font-semibold`,children:n?`Task`:`Selection`}),(0,y.jsx)(`div`,{className:`truncate text-[11px] text-muted-foreground`,children:n?.id.slice(0,8)??`No task selected`})]}),(0,y.jsx)(`button`,{type:`button`,title:`Close`,onClick:r,className:`flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground hover:bg-muted hover:text-foreground`,children:(0,y.jsx)(s,{size:16})})]}),n?(0,y.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto p-3`,children:[(0,y.jsx)(`div`,{className:`text-sm font-semibold leading-5`,children:n.title}),n.description&&(0,y.jsx)(`div`,{className:`mt-2 text-xs leading-5 text-muted-foreground`,children:n.description}),(0,y.jsxs)(`div`,{className:`mt-3 grid grid-cols-2 gap-2 text-xs`,children:[(0,y.jsx)(D,{label:`Status`,value:n.status}),(0,y.jsx)(D,{label:`Priority`,value:n.priority}),(0,y.jsx)(D,{label:`Run`,value:n.assignment?.status??`unassigned`}),(0,y.jsx)(D,{label:`Column`,value:n.columnId})]}),(0,y.jsxs)(`div`,{className:`mt-4 space-y-3`,children:[(0,y.jsx)(O,{label:`Agent ID`,value:l,onChange:d}),(0,y.jsx)(O,{label:`Name`,value:m,onChange:g}),(0,y.jsx)(A,{label:`Role`,value:_,options:w,placeholder:`Select a role…`,onChange:b}),(0,y.jsx)(A,{label:`Provider`,value:x,options:S,placeholder:`Select provider…`,onChange:e=>{E(e),N(``)}}),(0,y.jsx)(A,{label:`Model`,value:M,options:x&&C[x]?C[x]:k(),placeholder:x?`Select ${x} model…`:`Select a provider first…`,onChange:N}),(0,y.jsx)(A,{label:`Fallback profile`,value:P,options:T,placeholder:`None`,onChange:F}),(0,y.jsx)(j,{label:`Fallback models`,tags:I,onChange:L}),(0,y.jsx)(j,{label:`Tools`,tags:R,onChange:z}),(0,y.jsx)(j,{label:`Capabilities`,tags:B,onChange:V})]}),(0,y.jsxs)(`div`,{className:`mt-4 grid grid-cols-2 gap-2`,children:[(0,y.jsxs)(`button`,{type:`button`,onClick:()=>{!t||!n||(i(`kanban.task.assign`,W()),window.setTimeout(()=>a(t.id),150))},className:`inline-flex h-9 items-center justify-center gap-2 rounded-md border text-sm hover:bg-muted`,children:[(0,y.jsx)(c,{size:15}),`Assign`]}),(0,y.jsxs)(`button`,{type:`button`,onClick:()=>{!t||!n||(i(`kanban.task.dispatch`,W()),window.setTimeout(()=>a(t.id),200))},className:`inline-flex h-9 items-center justify-center gap-2 rounded-md bg-primary text-sm text-primary-foreground hover:bg-primary/90`,children:[(0,y.jsx)(u,{size:15}),`Dispatch`]})]}),e.length>1?(0,y.jsxs)(`div`,{className:`mt-4 space-y-2 rounded-md border bg-background p-2`,children:[(0,y.jsxs)(`label`,{className:`block`,children:[(0,y.jsx)(`span`,{className:`mb-1 block text-[11px] font-medium text-muted-foreground`,children:`Target board`}),(0,y.jsx)(`select`,{value:H,onChange:e=>U(e.target.value),className:`h-8 w-full rounded-md border bg-background px-2 text-sm outline-none focus:border-primary`,children:e.filter(e=>e.id!==t?.id).map(e=>(0,y.jsx)(`option`,{value:e.id,children:e.title},e.id))})]}),(0,y.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,y.jsxs)(`button`,{type:`button`,onClick:()=>{!t||!n||!H||i(`kanban.task.copy`,{boardId:t.id,taskId:n.id,targetBoardId:H})},disabled:!H,className:`inline-flex h-9 items-center justify-center gap-2 rounded-md border text-sm hover:bg-muted disabled:opacity-50`,children:[(0,y.jsx)(p,{size:15}),`Copy`]}),(0,y.jsxs)(`button`,{type:`button`,onClick:()=>{!t||!n||!H||i(`kanban.task.transfer`,{boardId:t.id,taskId:n.id,targetBoardId:H})},disabled:!H,className:`inline-flex h-9 items-center justify-center gap-2 rounded-md border text-sm hover:bg-muted disabled:opacity-50`,children:[(0,y.jsx)(f,{size:15}),`Transfer`]})]})]}):null,n.successCriteria?.length?(0,y.jsxs)(`div`,{className:`mt-5`,children:[(0,y.jsx)(`div`,{className:`mb-2 text-xs font-semibold uppercase text-muted-foreground`,children:`Checks`}),(0,y.jsx)(`div`,{className:`space-y-1.5`,children:n.successCriteria.map(e=>(0,y.jsxs)(`div`,{className:`flex items-center gap-2 rounded-md border bg-background px-2 py-1.5 text-xs`,children:[(0,y.jsx)(o,{size:13,className:e.status===`passed`?`text-success`:`text-muted-foreground`}),(0,y.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.description}),(0,y.jsx)(`span`,{className:`text-muted-foreground`,children:e.status})]},e.id))})]}):null]}):(0,y.jsx)(`div`,{className:`flex flex-1 items-center justify-center px-6 text-center text-sm text-muted-foreground`,children:`Select a task to edit assignment and dispatch settings.`})]})}function D({label:e,value:t}){return(0,y.jsxs)(`div`,{className:`rounded-md border bg-background px-2 py-1.5`,children:[(0,y.jsx)(`div`,{className:`text-[10px] uppercase text-muted-foreground`,children:e}),(0,y.jsx)(`div`,{className:`mt-0.5 truncate text-xs font-medium`,children:t})]})}function O({label:e,value:t,onChange:n}){return(0,y.jsxs)(`label`,{className:`block`,children:[(0,y.jsx)(`span`,{className:`mb-1 block text-[11px] font-medium text-muted-foreground`,children:e}),(0,y.jsx)(`input`,{value:t,onChange:e=>n(e.target.value),className:`h-8 w-full rounded-md border bg-background px-2 text-sm outline-none focus:border-primary`})]})}function k(){return[...new Set(Object.values(C).flat())]}function A({label:e,value:t,options:n,placeholder:r,onChange:i}){return(0,y.jsxs)(`label`,{className:`block`,children:[(0,y.jsx)(`span`,{className:`mb-1 block text-[11px] font-medium text-muted-foreground`,children:e}),(0,y.jsxs)(`select`,{value:t,onChange:e=>i(e.target.value),className:`h-8 w-full rounded-md border bg-background px-2 text-sm outline-none focus:border-primary`,children:[r&&(0,y.jsx)(`option`,{value:``,children:r}),n.map(e=>(0,y.jsx)(`option`,{value:e,children:e},e))]})]})}function j({label:e,tags:t,onChange:n}){let[r,i]=(0,v.useState)(``),a=()=>{let e=r.trim();e&&(t.includes(e)||n([...t,e]),i(``))},o=e=>{n(t.filter(t=>t!==e))};return(0,y.jsxs)(`label`,{className:`block`,children:[(0,y.jsx)(`span`,{className:`mb-1 block text-[11px] font-medium text-muted-foreground`,children:e}),(0,y.jsx)(`div`,{className:`rounded-md border bg-background px-2 py-1.5 focus-within:border-primary`,children:(0,y.jsxs)(`div`,{className:`flex flex-wrap gap-1`,children:[t.map(e=>(0,y.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded bg-muted px-1.5 py-0.5 text-[11px]`,children:[(0,y.jsx)(`span`,{className:`max-w-[120px] truncate`,children:e}),(0,y.jsx)(`button`,{type:`button`,onClick:()=>o(e),className:`text-muted-foreground hover:text-destructive`,children:(0,y.jsx)(s,{size:12})})]},e)),(0,y.jsx)(`input`,{value:r,onChange:e=>i(e.target.value),onKeyDown:e=>{(e.key===`Enter`||e.key===`,`)&&(e.preventDefault(),a()),e.key===`Backspace`&&!r&&t.length>0&&o(t[t.length-1])},onBlur:a,placeholder:t.length===0?`Type and press Enter to add…`:`Add…`,className:`min-w-[60px] flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground`})]})})]})}function M(e){let t=`rounded px-1.5 py-0.5`;return e===`critical`?`${t} bg-destructive/10 text-destructive`:e===`high`?`${t} bg-warning/10 text-warning`:e===`low`?`${t} bg-muted text-muted-foreground`:`${t} bg-info/10 text-info`}export{b as KanbanView};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{m as t,p as n}from"./markdown-BRAejDWd.js";import{Dr as r,Ft as i,Jn as a,Nr as o,Z as s,_i as c,ai as l,dn as u,fr as d,ht as f,it as p,jt as m,mi as h,mr as g,si as _,sn as v,zt as y}from"./vendor-C9iFsXuW.js";import"./i18n-ClFSbktB.js";import{t as b}from"./utils-Bl7Yr7Bw.js";import{n as x}from"./ui-store-LCpXBvQT.js";import{N as S,v as C,x as w}from"./index-DGwt4pL3.js";var T=e(t(),1),E=n(),D={note:a,ask:l,assign:m,steer:i,btw:r,broadcast:m,status:g,result:_},O={high:`border-destructive/25 bg-destructive/10 text-destructive`,normal:`border-border bg-muted text-muted-foreground`,low:`border-primary/20 bg-primary/10 text-primary`};function k(e){return new Date(e).toLocaleString()}function A(e){let t=new Date(e),n=Date.now()-t.getTime();return n<6e4?c.t(`common:time.justNow`):n<36e5?c.t(`common:time.minutesAgo`,{count:Math.round(n/6e4)}):n<864e5?c.t(`common:time.hoursAgo`,{count:Math.round(n/36e5)}):n<6048e5?c.t(`common:time.daysAgo`,{count:Math.round(n/864e5)}):t.toLocaleDateString()}function j(){let{t:e}=h();return(0,E.jsx)(`div`,{className:`flex h-full min-h-0 flex-1 items-center justify-center bg-[hsl(var(--surface-2)/0.45)] p-4`,children:(0,E.jsxs)(`div`,{className:`ws-surface flex max-w-md flex-col items-center gap-3 rounded-xl p-6 text-center text-muted-foreground`,children:[(0,E.jsx)(`span`,{className:`flex h-12 w-12 items-center justify-center rounded-lg bg-primary/10 text-primary`,children:(0,E.jsx)(u,{className:`h-6 w-6`})}),(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`div`,{className:`text-sm font-semibold text-foreground`,children:e(`activity:mailbox.emptyDetail`)}),(0,E.jsx)(`div`,{className:`mt-1 text-xs`,children:e(`activity:mailbox.emptyDetailHint`)})]})]})})}function M({readBy:e}){let{t}=h(),n=Object.entries(e);return n.length===0?null:(0,E.jsxs)(`div`,{className:`space-y-1`,children:[(0,E.jsx)(`div`,{className:`text-[10px] font-semibold text-muted-foreground uppercase tracking-wide`,children:t(`activity:mailbox.readBy`)}),(0,E.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:n.map(([e,t])=>(0,E.jsxs)(`span`,{className:`inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] bg-success/10 text-success`,title:k(t),children:[(0,E.jsx)(_,{className:`h-2.5 w-2.5`}),e]},e))})]})}function N({className:e}){let{t}=h(),n=x(e=>e.selectedMailMessage),r=x(e=>e.setSelectedMailMessage);(0,T.useEffect)(()=>()=>{r(null)},[r]);function i(){r(null),S(`chat`)}if(!n)return(0,E.jsx)(j,{});let a=D[n.type]??v,c=t(`activity:mailbox.type.${n.type}`,{defaultValue:n.type}),l=O[n.priority]??O.normal;return(0,E.jsx)(`div`,{className:b(`flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden bg-[hsl(var(--surface-2)/0.45)] p-3`,e),children:(0,E.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden rounded-xl border border-border/70 bg-card/75 shadow-sm`,children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-3 border-b border-border/70 px-3 py-3 sm:px-4 shrink-0`,children:[(0,E.jsx)(`button`,{type:`button`,onClick:i,className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-md border border-border/70 bg-background/60 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground`,title:t(`activity:mailbox.backToChat`),children:(0,E.jsx)(o,{className:`h-4 w-4`})}),(0,E.jsx)(`div`,{className:b(`flex h-9 w-9 shrink-0 items-center justify-center rounded-lg`,n.completed?`bg-success/10`:`bg-primary/10`),children:(0,E.jsx)(a,{className:b(`h-4 w-4`,n.completed?`text-success`:`text-primary`)})}),(0,E.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,E.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,E.jsx)(`h2`,{className:`text-sm font-semibold text-foreground truncate`,children:n.subject}),n.completed&&(0,E.jsxs)(`span`,{className:`inline-flex shrink-0 items-center gap-1 rounded-md border border-success/25 bg-success/8 px-1.5 py-0.5 text-[10px] font-semibold text-success`,children:[(0,E.jsx)(_,{className:`h-3 w-3`}),t(`activity:mailbox.completed`)]}),(0,E.jsx)(`span`,{className:b(`rounded-md border px-1.5 py-0.5 text-[10px] font-semibold uppercase`,l),children:n.priority||`normal`})]}),(0,E.jsxs)(`div`,{className:`mt-1 flex min-w-0 flex-wrap items-center gap-2 text-[11px] text-muted-foreground`,children:[(0,E.jsx)(`span`,{className:`min-w-0 truncate font-medium text-foreground/80`,children:n.from}),(0,E.jsx)(`span`,{children:`→`}),(0,E.jsx)(`span`,{className:`min-w-0 truncate`,children:n.to===`*`||n.to===`all`?t(`activity:mailbox.everyone`):n.to}),(0,E.jsx)(`span`,{className:`opacity-40`,children:`•`}),(0,E.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,E.jsx)(d,{className:`h-3 w-3`}),A(n.timestamp)]})]})]}),(0,E.jsx)(`button`,{type:`button`,onClick:i,className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground`,title:t(`activity:mailbox.closeTitle`),children:(0,E.jsx)(s,{className:`h-4 w-4`})})]}),(0,E.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto`,children:(0,E.jsx)(`div`,{className:`mx-auto w-full max-w-4xl px-4 py-5`,children:(0,E.jsx)(`div`,{className:`markdown-content prose prose-sm dark:prose-invert max-w-none text-sm leading-relaxed`,children:(0,E.jsx)(w,{components:C,children:n.body})})})}),(0,E.jsxs)(`div`,{className:`border-t border-border/70 bg-muted/20 px-4 py-3 shrink-0`,children:[(0,E.jsxs)(`div`,{className:`grid grid-cols-2 sm:grid-cols-4 gap-x-6 gap-y-2 text-xs`,children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-1.5 text-muted-foreground`,children:[(0,E.jsx)(f,{className:`h-3 w-3 shrink-0`}),(0,E.jsx)(`span`,{children:c})]}),(0,E.jsx)(`div`,{className:`flex items-center gap-1.5`,children:(0,E.jsx)(`span`,{className:b(`rounded border px-1.5 py-0.5 text-[10px] font-semibold uppercase`,l),children:n.priority||`normal`})}),(0,E.jsxs)(`div`,{className:`flex items-center gap-1.5 text-muted-foreground`,children:[(0,E.jsx)(p,{className:`h-3 w-3 shrink-0`}),(0,E.jsx)(`span`,{className:`truncate`,title:n.from,children:n.from})]}),(0,E.jsxs)(`div`,{className:`flex items-center gap-1.5 text-muted-foreground`,children:[(0,E.jsx)(d,{className:`h-3 w-3 shrink-0`}),(0,E.jsx)(`span`,{children:k(n.timestamp)})]}),n.replyTo&&(0,E.jsxs)(`div`,{className:`flex items-center gap-1.5 text-muted-foreground col-span-2`,children:[(0,E.jsx)(y,{className:`h-3 w-3 shrink-0`}),(0,E.jsx)(`span`,{className:`truncate`,children:t(`activity:mailbox.replyTo`,{id:n.replyTo})})]}),n.completed&&n.completedBy&&(0,E.jsxs)(`div`,{className:`flex items-center gap-1.5 text-muted-foreground col-span-2`,children:[(0,E.jsx)(_,{className:`h-3 w-3 shrink-0 text-success`}),(0,E.jsx)(`span`,{children:n.completedAt?t(`activity:mailbox.completedByAt`,{name:n.completedBy,time:k(n.completedAt)}):t(`activity:mailbox.completedBy`,{name:n.completedBy})})]}),n.outcome&&(0,E.jsxs)(`div`,{className:`flex items-start gap-1.5 text-muted-foreground col-span-2 sm:col-span-4`,children:[(0,E.jsx)(`span`,{className:`text-[10px] font-semibold uppercase tracking-wide shrink-0 mt-0.5`,children:t(`activity:mailbox.outcome`)}),(0,E.jsx)(`span`,{children:n.outcome})]}),n.taskContext&&(0,E.jsxs)(`div`,{className:`flex items-start gap-1.5 text-muted-foreground col-span-2 sm:col-span-4`,children:[(0,E.jsx)(`span`,{className:`text-[10px] font-semibold uppercase tracking-wide shrink-0 mt-0.5`,children:t(`activity:mailbox.task`)}),(0,E.jsx)(`span`,{children:n.taskContext})]})]}),Object.keys(n.readBy??{}).length>0&&(0,E.jsx)(`div`,{className:`mt-3 pt-3 border-t border-border/50`,children:(0,E.jsx)(M,{readBy:n.readBy})})]})]})})}export{N as MailboxDetailView};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{l as t,m as n,p as r}from"./markdown-BRAejDWd.js";import{$ as i,Cr as a,Dn as o,Fr as s,Lr as c,Nt as l,Sn as u,Tr as d,X as f,Y as p,_i as m,ci as h,cr as g,dn as _,et as v,fr as y,in as b,ir as x,it as S,jn as C,jt as w,mi as T,pt as E,rt as ee,un as D}from"./vendor-C9iFsXuW.js";import"./i18n-ClFSbktB.js";import{s as te}from"./ws-client-WVS5hdJj.js";import{t as O}from"./session-store-BOmBeF9r.js";import{t as k}from"./utils-Bl7Yr7Bw.js";import{A as ne,B as re,G as A,V as j,W as M,_ as N,g as ie,h as ae,v as P,x as F,y as I,z as L}from"./index-DGwt4pL3.js";import{a as R,c as z,d as oe,f as se,h as B,i as ce,l as le,m as V,n as ue,o as de,p as fe,r as pe,s as me,t as he,u as ge}from"./xyflow-YzHYNDhB.js";var H=e(n(),1),U=r();function W(e){if(e<1e3)return`${e}ms`;let t=Math.round(e/100);return t<600?`${(t/10).toFixed(1)}s`:`${Math.floor(t/600)}m ${Math.round(t%600/10)}s`}var _e={user:{Icon:S,labelKey:`activity:message.roleYou`,avatarBg:`bg-primary`,avatarColor:`text-primary-foreground`,avatarRing:`ring-2 ring-offset-2 ring-offset-background ring-primary/20`,bubbleBg:`bg-primary`,bubbleBorder:`border-transparent`,textColor:`text-primary-foreground`},assistant:{Icon:d,labelKey:`activity:message.roleAssistant`,avatarBg:`bg-accent`,avatarColor:`text-accent-foreground`,avatarRing:`ring-2 ring-offset-2 ring-offset-background ring-accent/20`,bubbleBg:`bg-card`,bubbleBorder:`border-border`,textColor:`text-foreground`},tool:{Icon:E,labelKey:`activity:message.roleTool`,avatarBg:`bg-secondary`,avatarColor:`text-secondary-foreground`,avatarRing:`ring-2 ring-offset-2 ring-offset-background ring-secondary/20`,bubbleBg:`bg-muted/80`,bubbleBorder:`border-border`,textColor:`text-foreground`},system:{Icon:d,labelKey:`activity:transcript.kindSystem`,avatarBg:`bg-muted`,avatarColor:`text-muted-foreground`,avatarRing:`ring-2 ring-offset-2 ring-offset-background ring-muted/20`,bubbleBg:`bg-muted/50`,bubbleBorder:`border-border`,textColor:`text-muted-foreground`},error:{Icon:h,labelKey:`activity:transcript.kindError`,avatarBg:`bg-destructive`,avatarColor:`text-destructive-foreground`,avatarRing:`ring-2 ring-offset-2 ring-offset-background ring-destructive/20`,bubbleBg:`bg-destructive/5`,bubbleBorder:`border-destructive/20`,textColor:`text-destructive`}};function G({entry:e}){let{t:n}=T();return e.role===`error`?(0,U.jsx)(ie,{text:e.text}):e.role===`tool`?(0,U.jsxs)(`div`,{className:`flex flex-col gap-1.5 tool-details`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-1.5 text-sm font-medium text-foreground`,children:[(0,U.jsx)(E,{className:`h-3 w-3`}),(0,U.jsx)(`span`,{className:`font-mono`,children:e.tool??n(`activity:watch.toolFallback`)}),e.durationMs!==void 0&&(0,U.jsxs)(`span`,{className:`ml-auto text-[10px] text-muted-foreground font-normal tabular-nums`,children:[(0,U.jsx)(y,{className:`h-3 w-3 inline mr-0.5 align-text-bottom`}),W(e.durationMs)]})]}),e.input!==void 0&&e.input!==null&&(0,U.jsx)(`div`,{className:`p-3 bg-muted/50 rounded-lg overflow-x-auto`,children:(0,U.jsx)(ae,{input:e.input})}),e.output!==void 0&&e.output!==null?(0,U.jsx)(`div`,{className:`text-sm leading-relaxed markdown-content`,children:typeof e.output==`string`?(0,U.jsx)(F,{remarkPlugins:[t],rehypePlugins:I,components:P,children:e.output}):(0,U.jsx)(`pre`,{className:`whitespace-pre-wrap font-mono text-xs bg-card rounded-lg p-2 border border-border overflow-x-auto`,children:JSON.stringify(e.output,null,2)})}):e.text?(0,U.jsx)(`div`,{className:`text-sm leading-relaxed markdown-content`,children:(0,U.jsx)(F,{remarkPlugins:[t],rehypePlugins:I,components:P,children:e.text})}):null,e.isError&&(0,U.jsxs)(`div`,{className:`rounded-lg border border-destructive/30 bg-destructive/5 px-3 py-2`,children:[(0,U.jsx)(`span`,{className:`text-xs font-medium text-destructive`,children:n(`activity:watch.toolFailed`)}),e.text&&(0,U.jsx)(`pre`,{className:`mt-1 text-xs whitespace-pre-wrap text-destructive/80`,children:e.text})]})]}):(0,U.jsx)(`div`,{className:`text-sm leading-relaxed markdown-content`,children:(0,U.jsx)(F,{remarkPlugins:[t],rehypePlugins:I,components:P,children:e.text})})}function ve({entry:e,isContinuation:t=!1}){let{t:n}=T(),r=_e[e.role],i=r.Icon;return(0,U.jsxs)(`div`,{className:`group flex gap-3 animate-message msg-bubble rounded-lg transition-shadow`,children:[t?(0,U.jsx)(`div`,{className:`flex-shrink-0 w-8`}):(0,U.jsx)(`div`,{className:k(`flex-shrink-0 w-8 h-8 rounded-full flex items-center justify-center`,r.avatarBg,r.avatarColor,r.avatarRing),children:(0,U.jsx)(i,{className:`h-4 w-4`})}),(0,U.jsxs)(`div`,{className:`flex flex-col gap-1.5 min-w-0 flex-1`,children:[!t&&(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`span`,{className:k(`text-xs font-medium`,r.textColor),children:e.role===`tool`&&e.tool?e.tool:n(r.labelKey)}),(0,U.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:new Date(e.ts).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`})}),e.role===`tool`&&e.durationMs!==void 0&&(0,U.jsxs)(`span`,{className:`text-[10px] text-muted-foreground tabular-nums`,children:[`· `,W(e.durationMs)]})]}),(0,U.jsx)(`div`,{className:k(`rounded-2xl px-4 py-3 border`,e.role===`user`&&`rounded-br-md`,e.role===`assistant`&&`rounded-bl-md`,e.role===`tool`&&`rounded-bl-sm`,e.role===`system`&&`rounded-bl-sm opacity-70`,e.role===`error`&&`rounded-bl-sm`,r.bubbleBg,r.bubbleBorder),children:(0,U.jsx)(`div`,{className:k(`text-sm leading-relaxed markdown-content`,r.textColor),children:(0,U.jsx)(G,{entry:e})})}),e.text&&e.role!==`error`&&(0,U.jsx)(`div`,{className:`opacity-0 group-hover:opacity-100 transition-opacity`,children:(0,U.jsx)(N,{text:e.text,label:n(`common:action.copy`)})})]})]})}var ye=[`steer`,`ask`,`assign`,`note`],be=2500;function xe({sessionId:e,limit:t=200}){let[n,r]=(0,H.useState)(null),{t:i}=T(),[a,o]=(0,H.useState)(null),[s,c]=(0,H.useState)(``),[l,u]=(0,H.useState)(!1),[f,p]=(0,H.useState)(null),[h,g]=(0,H.useState)(`steer`),[_,v]=(0,H.useState)(`high`),[y,b]=(0,H.useState)([]),[x,S]=(0,H.useState)(!1),C=(0,H.useRef)(null),w=(0,H.useRef)(!0),E=(0,H.useRef)(!0),ee=re(e=>e.liveSessions),D=(0,H.useMemo)(()=>ee.find(t=>t.sessionId===e),[ee,e]),te=(0,H.useMemo)(()=>{let e=D;return e?`${e.status}|${e.agents.map(e=>`${e.id}:${e.status}:${e.toolCalls??0}:${e.iterations??0}`).join(`,`)}`:``},[D]),O=D?.status===`active`||(D?.agents.some(e=>e.status===`running`||e.status===`streaming`)??!1),ne=(0,H.useMemo)(()=>{if(!D)return null;let e=D.agents.find(e=>e.status===`running`||e.status===`streaming`);return e?.currentTool?`🔧 ${e.currentTool}`:e?i(`activity:sessionWatch.working`,{name:e.name??e.id}):null},[D,i]),A=(0,H.useMemo)(()=>{if(!D)return null;let e=D.agents.find(e=>e.partialText&&(e.status===`streaming`||e.status===`running`))??D.agents.find(e=>e.partialText);return e?.partialText?{label:e.id===`leader`?i(`activity:sessionWatch.claude`):e.name||e.id,text:e.partialText}:null},[D,i]),j=(0,H.useCallback)(async()=>{try{let n=await fetch(`/api/sessions/${encodeURIComponent(e)}/events?limit=${t}`);if(!n.ok)throw Error(`HTTP ${n.status}`);let i=await n.json();E.current&&(r(i),o(null))}catch(e){E.current&&o(e instanceof Error?e.message:String(e))}},[e,t]),M=(0,H.useCallback)(async()=>{try{let t=await fetch(`/api/sessions/${encodeURIComponent(e)}/mailbox`);if(!t.ok)return;let n=await t.json();E.current&&Array.isArray(n.thread)&&b(n.thread)}catch{}},[e]);(0,H.useEffect)(()=>{E.current=!0,r(null),o(null),b([]),j(),M();let e=setInterval(()=>{document.hidden||(j(),M())},be);return()=>{E.current=!1,clearInterval(e)}},[j,M]),(0,H.useEffect)(()=>{te&&j()},[te,j]),(0,H.useEffect)(()=>{w.current&&C.current&&(C.current.scrollTop=C.current.scrollHeight)},[n,A]);let N=()=>{let e=C.current;e&&(w.current=e.scrollHeight-e.scrollTop-e.clientHeight<40)},ie=async()=>{let t=s.trim();if(!(!t||l)){u(!0),p(null);try{let n=await fetch(`/api/sessions/${encodeURIComponent(e)}/message`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({text:t,type:h,priority:_})});if(!n.ok)throw Error(`HTTP ${n.status}`);c(``),p(O?m.t(`activity:sessionWatch.sentRunning`):m.t(`activity:sessionWatch.sentIdle`)),M()}catch(e){p(m.t(`activity:sessionWatch.sentFailed`,{error:e instanceof Error?e.message:String(e)}))}finally{u(!1)}}},ae=async()=>{if(!x){S(!0),p(null);try{let t=await fetch(`/api/sessions/${encodeURIComponent(e)}/interrupt`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({reason:m.t(`activity:sessionWatch.interruptReason`)})});if(!t.ok)throw Error(`HTTP ${t.status}`);p(m.t(`activity:sessionWatch.interruptSent`)),M()}catch(e){p(m.t(`activity:sessionWatch.interruptFailed`,{error:e instanceof Error?e.message:String(e)}))}finally{S(!1)}}},P=n?.entries??[];return(0,U.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-col`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between mb-1.5 shrink-0`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[10px] uppercase tracking-wide text-muted-foreground`,children:[(0,U.jsx)(`span`,{className:k(`h-1.5 w-1.5 rounded-full`,O?`bg-success animate-pulse`:`bg-muted-foreground`)}),i(`activity:sessionWatch.liveStream`)]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[n&&(0,U.jsxs)(`div`,{className:`text-[10px] text-muted-foreground`,children:[i(`activity:sessionWatch.events`,{count:n.total}),` · `,n.status]}),O&&(0,U.jsx)(`button`,{type:`button`,onClick:()=>void ae(),disabled:x,title:i(`activity:sessionWatch.interruptTitle`),className:`rounded border border-destructive/40 bg-destructive/15 px-1.5 py-0.5 text-[10px] text-destructive hover:bg-destructive/25 disabled:opacity-40 transition-colors`,children:i(x?`activity:sessionWatch.interrupting`:`activity:sessionWatch.interrupt`)})]})]}),ne&&(0,U.jsxs)(`div`,{className:`mb-1.5 shrink-0 text-[10px] text-foreground truncate`,children:[`▶ `,ne]}),a&&(0,U.jsxs)(`div`,{className:`text-[11px] text-destructive mb-1 shrink-0`,children:[`· `,a]}),(0,U.jsxs)(`div`,{ref:C,onScroll:N,className:`min-h-0 min-w-0 flex-1 overflow-y-auto space-y-1.5 pr-1`,children:[P.length===0&&!a&&(0,U.jsx)(`div`,{className:`text-[11px] text-muted-foreground italic`,children:i(`activity:sessionWatch.loading`)}),P.map((e,t)=>(0,U.jsx)(ve,{entry:e,isContinuation:t>0&&P[t-1].role===e.role},`${e.ts}-${t}`)),A&&(0,U.jsxs)(`div`,{className:`flex gap-3 animate-message`,children:[(0,U.jsx)(`div`,{className:`flex-shrink-0 w-8 h-8 rounded-full flex items-center justify-center bg-accent text-accent-foreground ring-2 ring-offset-2 ring-offset-background ring-accent/20`,children:(0,U.jsx)(d,{className:`h-4 w-4 animate-pulse`})}),(0,U.jsxs)(`div`,{className:`flex flex-col gap-1.5 max-w-[85%] min-w-0`,children:[(0,U.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground px-1`,children:A.label}),(0,U.jsx)(`div`,{className:`rounded-2xl rounded-bl-md px-4 py-3 bg-card border border-border`,children:(0,U.jsxs)(`span`,{className:`text-sm leading-relaxed text-foreground whitespace-pre-wrap break-words`,children:[A.text,(0,U.jsx)(`span`,{className:`animate-pulse text-primary`,children:`▋`})]})})]})]})]}),y.length>0&&(0,U.jsxs)(`div`,{className:`mt-2 pt-2 border-t border-border shrink-0 max-h-28 overflow-y-auto space-y-1`,children:[(0,U.jsx)(`div`,{className:`text-[9px] uppercase tracking-wide text-muted-foreground`,children:i(`activity:mailbox.messages`)}),y.slice(-6).map(e=>{let t=e.completed?i(`activity:sessionWatch.done`):e.readByLeader?i(`activity:sessionWatch.read`):i(`activity:sessionWatch.delivered`);return(0,U.jsxs)(`div`,{className:`text-[10px] leading-snug`,children:[(0,U.jsx)(`span`,{className:k(`font-semibold mr-1.5`,e.fromLeader?`text-accent`:`text-primary`),children:e.fromLeader?i(`activity:sessionWatch.agent`):i(`activity:sessionWatch.you`)}),(0,U.jsx)(`span`,{className:`text-foreground whitespace-pre-wrap break-words`,children:e.body}),!e.fromLeader&&(0,U.jsx)(`span`,{className:k(`ml-1.5 text-[9px]`,e.completed?`text-success`:e.readByLeader?`text-primary`:`text-muted-foreground`),children:t})]},e.id)})]}),(0,U.jsxs)(`div`,{className:`mt-2 pt-2 border-t border-border shrink-0`,children:[(0,U.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5`,children:[(0,U.jsx)(`select`,{value:h,onChange:e=>g(e.target.value),title:i(`activity:sessionWatch.msgType.${h}Hint`),className:`rounded bg-muted border border-border px-1.5 py-0.5 text-[10px] text-foreground focus:outline-none focus:ring-1 focus:ring-ring`,children:ye.map(e=>(0,U.jsx)(`option`,{value:e,children:i(`activity:sessionWatch.msgType.${e}Label`)},e))}),(0,U.jsxs)(`select`,{value:_,onChange:e=>v(e.target.value),title:i(`activity:sessionWatch.priority`),className:`rounded bg-muted border border-border px-1.5 py-0.5 text-[10px] text-foreground focus:outline-none focus:ring-1 focus:ring-ring`,children:[(0,U.jsx)(`option`,{value:`high`,children:`high`}),(0,U.jsx)(`option`,{value:`normal`,children:`normal`}),(0,U.jsx)(`option`,{value:`low`,children:`low`})]})]}),(0,U.jsxs)(`div`,{className:`flex items-end gap-1.5`,children:[(0,U.jsx)(`textarea`,{value:s,onChange:e=>c(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),ie())},rows:2,placeholder:i(`activity:sessionWatch.placeholder`,{label:i(`activity:sessionWatch.msgType.${h}Label`)}),className:`flex-1 resize-none rounded-md bg-muted border border-border px-2 py-1 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring`}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>void ie(),disabled:l||!s.trim(),className:`shrink-0 rounded-md bg-primary text-primary-foreground px-2.5 py-1.5 text-xs hover:bg-primary/90 disabled:opacity-40 disabled:cursor-not-allowed transition-colors`,children:l?`…`:i(`activity:sessionWatch.send`)})]}),f&&(0,U.jsx)(`div`,{className:`mt-1 text-[10px] text-muted-foreground`,children:f}),(0,U.jsx)(`div`,{className:`mt-0.5 text-[9px] text-muted-foreground`,children:i(`activity:sessionWatch.sendHint`)})]})]})}function K(e){return e==null||!Number.isFinite(e)?`0`:e<1e3?String(Math.round(e)):e<1e6?`${(e/1e3).toFixed(1)}k`:`${(e/1e6).toFixed(1)}M`}function Se(e,t){if(!e)return`never`;let n=Date.parse(e);if(!Number.isFinite(n))return`never`;let r=Math.max(0,Math.round((t-n)/1e3));return r<60?`${r}s ago`:r<3600?`${Math.round(r/60)}m ago`:r<86400?`${Math.round(r/3600)}h ago`:`${Math.round(r/86400)}d ago`}function Ce(e,t){if(!e)return``;let n=Date.parse(e);if(!Number.isFinite(n))return``;let r=Math.max(0,Math.round((t-n)/1e3));return r<60?`${r}s`:r<3600?`${Math.round(r/60)}m`:`${Math.round(r/3600)}h`}function we(e){if(!e)return;let t=e.split(`/`);return t[t.length-1]?.slice(0,18)}function Te(e,t=380){let n=new Map,r=Math.max(1,e.length);return e.forEach((e,i)=>{let a=(i-(r-1)/2)*t;n.set(e,600+a)}),n}function Ee(e,t,n){let r=Math.min(3,n),i=Math.floor(t/r),a=t%r;return{x:e-(Math.min(r,n-i*r)-1)*190/2+a*190,y:640+i*150}}function De(e){return e===`tui`?`tui`:e===`repl`||e===`cli`?`repl`:`webui`}function Oe(e){return e===`tui`?`TUI`:e===`repl`?`REPL`:`WebUI`}function ke(e){switch(e){case`running`:case`active`:return`active`;case`idle`:return`idle`;case`completed`:return`completed`;case`failed`:case`error`:return`error`;case`stopped`:return`offline`;default:return`idle`}}function Ae(e,t){let n=new Set,r=[];for(let i of e){let e=De(i.clientType),a=`client-${i.pid??i.sessionId}`,o=[],s=!1;for(let e of i.agents){n.add(e.id);let r=t.get(e.id),i=ke(r?.status??e.status);(i===`active`||i===`streaming`)&&(s=!0),o.push({officeId:`${a}__agent-${e.id}`,serverId:e.id,name:r?.name??e.name??e.id,status:i,iteration:r?.iteration??e.iterations??0,toolCalls:r?.toolCalls??e.toolCalls??0,costUsd:r?.costUsd??e.costUsd??0,tokensIn:r?.tokensIn??e.tokensIn??0,tokensOut:r?.tokensOut??e.tokensOut??0,ctxPct:r?.ctxPct??e.ctxPct,model:r?.model??e.model,lastActivityAt:e.lastActivityAt,currentTask:r?.currentTool??r?.lastTool??e.currentTool})}let c=i.status===`closing`||i.status===`stale`||i.status===`lost`?`offline`:s?`active`:`idle`;r.push({id:a,type:e,label:i.projectName||Oe(e),sublabel:[Oe(e),i.gitBranch?`⎇ ${i.gitBranch}`:``,i.pid?`pid ${i.pid}`:``].filter(Boolean).join(` · `),status:c,sessionId:i.sessionId,pid:i.pid,branch:i.gitBranch,workingDir:i.workingDir,startedAt:i.startedAt,agents:o})}let i=[...t.values()].filter(e=>!n.has(e.id));if(i.length>0){let e=r.find(e=>e.type===`webui`);e||(e={id:`client-self`,type:`webui`,label:`This WebUI`,sublabel:`Web UI`,status:`idle`,agents:[]},r.push(e));for(let t of i){let n=ke(t.status);(n===`active`||n===`streaming`)&&(e.status=`active`),e.agents.push({officeId:`${e.id}__agent-${t.id}`,serverId:t.id,name:t.name,status:n,iteration:t.iteration??0,toolCalls:t.toolCalls??0,costUsd:t.costUsd??0,tokensIn:t.tokensIn??0,tokensOut:t.tokensOut??0,ctxPct:t.ctxPct,model:t.model,currentTask:t.currentTool??t.lastTool})}}return r.length===0&&r.push({id:`client-self`,type:`webui`,label:`This WebUI`,sublabel:`Web UI · connecting…`,status:`idle`,agents:[]}),r}function je(e){return e.startsWith(`tool`)?`hsl(var(--warning))`:e.startsWith(`mailbox`)?`hsl(var(--info))`:e.startsWith(`provider`)?`hsl(var(--primary))`:e.startsWith(`agent`)||e.startsWith(`subagent`)?`hsl(var(--success))`:e.includes(`error`)?`hsl(var(--destructive))`:`hsl(var(--primary))`}var q={primary:`hsl(var(--primary))`,info:`hsl(var(--info))`,success:`hsl(var(--success))`,warning:`hsl(var(--warning))`,destructive:`hsl(var(--destructive))`,muted:`hsl(var(--muted-foreground))`};function Me(e){return Math.min(100,Math.max(0,e??0))}function J({status:e,small:t,activity:n=0}){let r=t?`w-2 h-2`:`w-3 h-3`,i=t?4+n*4:6+n*6,a={idle:`bg-muted-foreground`,active:`bg-success`,streaming:`bg-primary`,completed:`bg-primary`,error:`bg-destructive`,offline:`bg-muted-foreground/60`},o={idle:q.muted,active:q.success,streaming:q.primary,completed:q.primary,error:q.destructive,offline:q.muted};return(0,U.jsx)(`span`,{className:k(`rounded-full`,r,n>0&&`animate-pulse`,a[e]),style:{boxShadow:n>0?`0 0 ${i}px ${o[e]}`:void 0}})}function Ne(){let{t:e}=T(),{clientCounts:t,currentSession:n,totalAgents:r,activeAgents:i,aggregate:a}=re(p(e=>({clientCounts:e.clientCounts,currentSession:e.currentSession,totalAgents:e.totalAgents,activeAgents:e.activeAgents,aggregate:e.aggregate}))),o=t.tui+t.webui+t.repl,s=e=>e?.toLocaleString()??`0`;return(0,U.jsxs)(`div`,{className:`absolute left-4 top-20 z-10 rounded-xl border border-border/70 bg-card/90 p-3 text-foreground shadow-xl backdrop-blur`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2 mb-2`,children:[(0,U.jsx)(c,{className:`h-3.5 w-3.5 text-success`}),(0,U.jsx)(`span`,{className:`text-[10px] font-bold uppercase text-muted-foreground`,children:e(`activity:office.sessionStats`)})]}),(0,U.jsxs)(`div`,{className:`space-y-1.5 text-[10px]`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,U.jsx)(ee,{className:`h-3 w-3 text-muted-foreground`}),(0,U.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.clients`)})]}),(0,U.jsxs)(`span`,{className:`font-mono text-foreground`,children:[i,` `,(0,U.jsx)(`span`,{className:`text-muted-foreground`,children:`/`}),` `,(0,U.jsx)(`span`,{className:`text-success`,children:o})]})]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-3 pl-4 text-[9px]`,children:[t.tui>0&&(0,U.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,U.jsx)(E,{className:`h-2.5 w-2.5 text-success`}),(0,U.jsx)(`span`,{className:`text-muted-foreground`,children:`TUI`}),(0,U.jsx)(`span`,{className:`font-mono text-success`,children:t.tui})]}),t.webui>0&&(0,U.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,U.jsx)(b,{className:`h-2.5 w-2.5 text-primary`}),(0,U.jsx)(`span`,{className:`text-muted-foreground`,children:`WebUI`}),(0,U.jsx)(`span`,{className:`font-mono text-primary`,children:t.webui})]}),t.repl>0&&(0,U.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,U.jsx)(E,{className:`h-2.5 w-2.5 text-warning`}),(0,U.jsx)(`span`,{className:`text-muted-foreground`,children:`REPL`}),(0,U.jsx)(`span`,{className:`font-mono text-warning`,children:t.repl})]})]}),(0,U.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,U.jsx)(d,{className:`h-3 w-3 text-muted-foreground`}),(0,U.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:officeMap.agents`)})]}),(0,U.jsxs)(`span`,{className:`font-mono text-foreground`,children:[i,` `,(0,U.jsx)(`span`,{className:`text-muted-foreground`,children:`/`}),` `,(0,U.jsx)(`span`,{className:`text-primary`,children:r})]})]}),n.model&&(0,U.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,U.jsx)(g,{className:`h-3 w-3 text-muted-foreground`}),(0,U.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:officeMap.model`)})]}),(0,U.jsx)(`span`,{className:`max-w-[120px] truncate font-mono text-primary`,title:n.model,children:n.model.split(`/`).pop()?.slice(0,16)})]}),n.mode&&(0,U.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,U.jsx)(f,{className:`h-3 w-3 text-muted-foreground`}),(0,U.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:officeMap.mode`)})]}),(0,U.jsx)(`span`,{className:k(`font-mono uppercase text-[9px] px-1.5 py-0.5 rounded`,n.mode===`auto`&&`bg-primary/10 text-primary`,n.mode===`suggest`&&`bg-success/10 text-success`,n.mode===`off`&&`bg-muted text-muted-foreground`,![`auto`,`suggest`,`off`].includes(n.mode||``)&&`bg-muted text-muted-foreground`),children:n.mode})]}),(0,U.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,U.jsx)(C,{className:`h-3 w-3 text-muted-foreground`}),(0,U.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.toolCallsLabel`)})]}),(0,U.jsx)(`span`,{className:`font-mono text-warning`,children:s(a.toolCalls)})]}),(0,U.jsxs)(`div`,{className:`mt-1.5 space-y-1 border-t border-border/70 pt-1.5`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,U.jsx)(`span`,{className:`text-[8px] text-muted-foreground`,children:`IN`}),(0,U.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.input`)})]}),(0,U.jsx)(`span`,{className:`font-mono text-[9px] text-foreground`,children:s(a.tokensIn)})]}),(0,U.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,U.jsx)(`span`,{className:`text-[8px] text-muted-foreground`,children:`OUT`}),(0,U.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.output`)})]}),(0,U.jsx)(`span`,{className:`font-mono text-[9px] text-foreground`,children:s(a.tokensOut)})]})]}),(0,U.jsxs)(`div`,{className:`mt-1.5 flex items-center justify-between gap-4 border-t border-border/70 pt-1.5`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,U.jsx)(x,{className:`h-3 w-3 text-muted-foreground`}),(0,U.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.cost`)})]}),(0,U.jsx)(`span`,{className:`font-mono font-medium text-success`,children:(e=>e==null?`$0.0000`:`$${e.toFixed(4)}`)(a.costUsd)})]})]})]})}function Y(){let e={opacity:0,width:1,height:1,minWidth:0,border:`none`,background:`transparent`};return(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(R,{type:`target`,position:V.Top,style:e,isConnectable:!1}),(0,U.jsx)(R,{type:`source`,position:V.Bottom,style:e,isConnectable:!1})]})}function X({data:e}){let{t}=T();return(0,U.jsxs)(`div`,{className:`mt-2 flex items-center justify-between border-t border-border/60 pt-1.5 text-[8px] text-muted-foreground`,children:[(0,U.jsxs)(`span`,{children:[(0,U.jsx)(`span`,{className:`font-mono text-foreground`,children:e.agentCount??0}),` `,t(`activity:office.agentsSuffix`)]}),e.startedAt&&(0,U.jsx)(`span`,{children:t(`activity:office.upPrefix`,{time:Ce(e.startedAt,Date.now())})})]})}function Pe({data:e}){let{t}=T(),n=e.status===`active`||e.status===`streaming`,r=e.status===`error`,a=e.status===`offline`,o=e.color||q.info;return(0,U.jsxs)(`div`,{className:k(`rounded-xl border-2 p-4 min-w-[180px] transition-all backdrop-blur-sm`,n&&`shadow-lg shadow-primary/15`,r&&`border-destructive/50 bg-destructive/10`,a&&`border-border/70 bg-muted/35 opacity-60`,!n&&!r&&!a&&`border-primary/30 bg-primary/10`),children:[(0,U.jsx)(Y,{}),(0,U.jsxs)(`div`,{className:`flex items-center gap-3 mb-3`,children:[(0,U.jsx)(`div`,{className:k(`flex items-center justify-center w-10 h-10 rounded-lg`,n?`bg-primary/15`:`bg-primary/10`),children:(0,U.jsx)(b,{className:`h-5 w-5`,style:{color:o}})}),(0,U.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,U.jsx)(`div`,{className:`text-xs font-bold truncate`,style:{color:o},children:e.label}),(0,U.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:t(`activity:office.webuiClient`)})]}),(0,U.jsx)(J,{status:e.status,activity:e.vizActivity??0})]}),e.sublabel&&(0,U.jsx)(`div`,{className:`mb-2 truncate text-[10px] text-muted-foreground`,children:e.sublabel}),(0,U.jsx)(`div`,{className:`flex items-center gap-2 text-[10px] text-muted-foreground`,children:a?(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(v,{className:`h-3 w-3 text-muted-foreground`}),(0,U.jsx)(`span`,{children:t(`activity:office.disconnected`)})]}):(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(i,{className:`h-3 w-3 text-success`}),(0,U.jsx)(`span`,{children:t(`activity:office.connected`)})]})}),n&&(0,U.jsx)(`div`,{className:`mt-2 h-1 overflow-hidden rounded-full bg-primary/20`,children:(0,U.jsx)(`div`,{className:`h-full animate-pulse bg-primary`,style:{width:`60%`}})}),(0,U.jsx)(X,{data:e})]})}function Z({data:e}){let{t}=T(),n=e.status===`active`||e.status===`streaming`,r=e.status===`error`,i=e.color||q.success;return(0,U.jsxs)(`div`,{className:k(`rounded-xl border-2 p-4 min-w-[180px] transition-all backdrop-blur-sm`,n&&`shadow-lg shadow-success/15`,r&&`border-destructive/50 bg-destructive/10`,!n&&!r&&`border-success/30 bg-success/10`),children:[(0,U.jsx)(Y,{}),(0,U.jsxs)(`div`,{className:`flex items-center gap-3 mb-3`,children:[(0,U.jsx)(`div`,{className:k(`flex items-center justify-center w-10 h-10 rounded-lg`,n?`bg-success/15`:`bg-success/10`),children:(0,U.jsx)(E,{className:`h-5 w-5`,style:{color:i}})}),(0,U.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,U.jsx)(`div`,{className:`text-xs font-bold truncate`,style:{color:i},children:e.label}),(0,U.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:t(`activity:office.tuiClient`)})]}),(0,U.jsx)(J,{status:e.status,activity:e.vizActivity??0})]}),e.sublabel&&(0,U.jsx)(`div`,{className:`mb-2 truncate text-[10px] text-muted-foreground`,children:e.sublabel}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2 text-[10px] text-muted-foreground`,children:[(0,U.jsx)(E,{className:`h-3 w-3 text-success`}),(0,U.jsx)(`span`,{children:t(`activity:office.terminal`)})]}),(0,U.jsx)(X,{data:e})]})}function Fe({data:e}){let{t}=T(),n=e.status===`active`||e.status===`streaming`,r=e.color||q.warning;return(0,U.jsxs)(`div`,{className:k(`rounded-xl border-2 p-4 min-w-[160px] transition-all backdrop-blur-sm`,n&&`shadow-lg shadow-warning/15`,!n&&`border-warning/30 bg-warning/10`),children:[(0,U.jsx)(Y,{}),(0,U.jsxs)(`div`,{className:`flex items-center gap-3 mb-3`,children:[(0,U.jsx)(`div`,{className:k(`flex items-center justify-center w-10 h-10 rounded-lg`,n?`bg-warning/15`:`bg-warning/10`),children:(0,U.jsx)(E,{className:`h-5 w-5`,style:{color:r}})}),(0,U.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,U.jsx)(`div`,{className:`text-xs font-bold truncate`,style:{color:r},children:e.label}),(0,U.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:t(`activity:office.repl`)})]}),(0,U.jsx)(J,{status:e.status,activity:e.vizActivity??0})]}),e.sublabel&&(0,U.jsx)(`div`,{className:`mb-1 truncate text-[10px] text-muted-foreground`,children:e.sublabel}),(0,U.jsx)(X,{data:e})]})}function Ie({data:e}){let{t}=T(),n=e.status===`active`||e.status===`streaming`,r=e.color||q.primary;return(0,U.jsxs)(`div`,{className:`relative min-w-[200px] rounded-xl border-2 border-border/70 bg-card/90 p-4 shadow-lg backdrop-blur-sm transition-all`,children:[(0,U.jsx)(Y,{}),(0,U.jsx)(`div`,{className:`absolute -top-3 left-1/2 -translate-x-1/2 rounded-full bg-primary px-2 py-0.5 text-[9px] font-bold text-primary-foreground`,children:t(`activity:office.coordinator`)}),(0,U.jsxs)(`div`,{className:`flex items-center gap-3 mb-3 mt-2`,children:[(0,U.jsx)(`div`,{className:k(`flex items-center justify-center w-12 h-12 rounded-xl`,n?`bg-primary/15`:`bg-primary/10`),children:(0,U.jsx)(g,{className:`h-6 w-6`,style:{color:r}})}),(0,U.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,U.jsx)(`div`,{className:`text-sm font-bold truncate`,style:{color:r},children:e.label}),(0,U.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:e.sublabel||t(`activity:office.fleetSummary`)})]}),(0,U.jsx)(J,{status:e.status,activity:e.vizActivity??0})]}),(0,U.jsxs)(`div`,{className:`grid grid-cols-2 gap-2 text-[10px] mb-2`,children:[(0,U.jsxs)(`div`,{className:`rounded bg-muted/40 p-1.5 text-center`,children:[(0,U.jsxs)(`div`,{className:`font-mono`,children:[(0,U.jsx)(`span`,{className:`text-success`,children:e.agentsActive||0}),(0,U.jsx)(`span`,{className:`text-muted-foreground`,children:` / `}),(0,U.jsx)(`span`,{className:`text-primary`,children:e.agentsTotal||0})]}),(0,U.jsx)(`div`,{className:`text-muted-foreground`,children:t(`activity:officeMap.agents`)})]}),(0,U.jsxs)(`div`,{className:`rounded bg-muted/40 p-1.5 text-center`,children:[(0,U.jsx)(`div`,{className:`font-mono text-warning`,children:(e.toolCalls||0).toLocaleString()}),(0,U.jsx)(`div`,{className:`text-muted-foreground`,children:t(`activity:office.toolCallsLabel`)})]}),(0,U.jsxs)(`div`,{className:`rounded bg-muted/40 p-1.5 text-center`,children:[(0,U.jsx)(`div`,{className:`font-mono text-foreground`,children:K(e.tokensIn)}),(0,U.jsx)(`div`,{className:`text-muted-foreground`,children:t(`activity:office.tokensLabel`)})]}),(0,U.jsxs)(`div`,{className:`rounded bg-muted/40 p-1.5 text-center`,children:[(0,U.jsxs)(`div`,{className:`font-mono text-success`,children:[`$`,(e.costUsd||0).toFixed(3)]}),(0,U.jsx)(`div`,{className:`text-muted-foreground`,children:t(`activity:office.cost`)})]})]}),n&&(0,U.jsxs)(`div`,{className:`flex items-center gap-2 text-[10px] text-primary`,children:[(0,U.jsx)(`span`,{className:`h-2 w-2 animate-pulse rounded-full bg-primary`}),t(`activity:office.coordinatingFleet`)]})]})}function Le({data:e}){let{t}=T(),n=e.status===`active`||e.status===`streaming`,r=e.status===`error`,i=e.status===`completed`,a=e.color||q.primary,o=Me(e.ctxPct);return(0,U.jsxs)(`div`,{className:k(`rounded-lg border p-3 min-w-[150px] transition-all backdrop-blur-sm`,n&&`border-primary/50 bg-primary/10 shadow-lg shadow-primary/10`,r&&`border-destructive/50 bg-destructive/10`,i&&`border-border/70 bg-muted/35`,!n&&!r&&!i&&`border-primary/30 bg-primary/10`),children:[(0,U.jsx)(Y,{}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2 mb-1.5`,children:[(0,U.jsx)(d,{className:`h-4 w-4 shrink-0`,style:{color:a}}),(0,U.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,U.jsx)(`div`,{className:`text-[11px] font-bold truncate`,style:{color:a},children:e.label}),e.model&&(0,U.jsx)(`div`,{className:`truncate text-[8px] text-muted-foreground`,children:we(e.model)})]}),(0,U.jsx)(J,{status:e.status,small:!0,activity:e.vizActivity??0})]}),e.currentTask&&(0,U.jsxs)(`div`,{className:`mb-1.5 flex items-center gap-1 truncate text-[9px] text-primary`,children:[(0,U.jsx)(`span`,{className:k(`h-1.5 w-1.5 shrink-0 rounded-full bg-primary`,n&&`animate-pulse`)}),(0,U.jsx)(`span`,{className:`truncate font-mono`,children:e.currentTask})]}),(0,U.jsxs)(`div`,{className:`grid grid-cols-2 gap-x-2 gap-y-0.5 text-[9px] mb-1.5`,children:[(0,U.jsxs)(`div`,{className:`flex justify-between`,children:[(0,U.jsx)(`span`,{className:`text-muted-foreground`,children:`iter`}),(0,U.jsx)(`span`,{className:`font-mono text-foreground`,children:e.iteration||0})]}),(0,U.jsxs)(`div`,{className:`flex justify-between`,children:[(0,U.jsx)(`span`,{className:`text-muted-foreground`,children:`tools`}),(0,U.jsx)(`span`,{className:`font-mono text-warning`,children:e.toolCalls||0})]}),(0,U.jsxs)(`div`,{className:`flex justify-between`,children:[(0,U.jsx)(`span`,{className:`text-muted-foreground`,children:`tok`}),(0,U.jsx)(`span`,{className:`font-mono text-foreground`,children:K((e.tokensIn||0)+(e.tokensOut||0))})]}),(0,U.jsxs)(`div`,{className:`flex justify-between`,children:[(0,U.jsx)(`span`,{className:`text-muted-foreground`,children:`cost`}),(0,U.jsxs)(`span`,{className:`font-mono text-success`,children:[`$`,(e.costUsd||0).toFixed(3)]})]})]}),o>0&&(0,U.jsxs)(`div`,{className:`mb-1`,children:[(0,U.jsxs)(`div`,{className:`mb-0.5 flex justify-between text-[8px] text-muted-foreground`,children:[(0,U.jsx)(`span`,{children:`ctx`}),(0,U.jsxs)(`span`,{className:k(`font-mono`,o>=90?`text-destructive`:o>=70?`text-warning`:`text-muted-foreground`),children:[o,`%`]})]}),(0,U.jsx)(`div`,{className:`h-1 overflow-hidden rounded-full bg-muted`,children:(0,U.jsx)(`div`,{className:k(`h-full`,o>=90?`bg-destructive`:o>=70?`bg-warning`:`bg-primary`),style:{width:`${o}%`}})})]}),e.lastActivityAt&&(0,U.jsxs)(`div`,{className:k(`flex items-center gap-1 text-[8px]`,n?`text-muted-foreground/70`:`text-muted-foreground`),children:[i&&(0,U.jsx)(`span`,{className:`text-success`,children:t(`activity:office.donePrefix`)}),r&&(0,U.jsx)(`span`,{className:`text-destructive`,children:t(`activity:office.failedPrefix`)}),(0,U.jsx)(`span`,{children:t(`activity:office.seenPrefix`,{time:Se(e.lastActivityAt,Date.now())})})]})]})}function Re({data:e}){let{t}=T();return(0,U.jsxs)(`div`,{className:k(`rounded-lg border border-dashed p-3 min-w-[120px] transition-all opacity-40`,`border-border/70 bg-muted/30`),children:[(0,U.jsx)(Y,{}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2 mb-2`,children:[(0,U.jsx)(s,{className:`h-4 w-4 text-muted-foreground`}),(0,U.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,U.jsx)(`div`,{className:`truncate text-[10px] text-muted-foreground`,children:e.label})}),(0,U.jsx)(J,{status:e.status,small:!0,activity:e.vizActivity??0})]}),(0,U.jsx)(`div`,{className:`text-[9px] text-muted-foreground`,children:t(`activity:office.availableDesk`)})]})}function Q({data:e}){let{t}=T(),n=e.color||q.warning,r=(e.unreadCount||0)>0;return(0,U.jsxs)(`div`,{className:k(`rounded-xl border-2 p-4 min-w-[160px] transition-all backdrop-blur-sm`,r&&`border-warning/50 bg-warning/10 shadow-lg shadow-warning/10`,!r&&`border-warning/30 bg-warning/6`),children:[(0,U.jsx)(Y,{}),(0,U.jsxs)(`div`,{className:`flex items-center gap-3 mb-3`,children:[(0,U.jsx)(`div`,{className:k(`flex items-center justify-center w-10 h-10 rounded-lg`,r?`bg-warning/18`:`bg-warning/10`),children:(0,U.jsx)(_,{className:`h-5 w-5`,style:{color:n}})}),(0,U.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,U.jsx)(`div`,{className:`text-xs font-bold`,style:{color:n},children:t(`activity:office.mailboxHub`)}),(0,U.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:r?t(`activity:office.unreadSuffix`,{count:e.unreadCount||0}):t(`activity:office.allClear`)})]}),r&&(0,U.jsx)(`div`,{className:`flex h-5 w-5 items-center justify-center rounded-full bg-warning text-[10px] font-bold text-background`,children:e.unreadCount})]}),(0,U.jsxs)(`div`,{className:`grid grid-cols-2 gap-2 text-[10px]`,children:[(0,U.jsxs)(`div`,{className:`rounded bg-muted/40 p-1.5 text-center`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-center gap-1 text-warning`,children:[(0,U.jsx)(w,{className:`h-3 w-3`}),(0,U.jsx)(`span`,{children:e.messageCount||0})]}),(0,U.jsx)(`div`,{className:`text-muted-foreground`,children:t(`activity:office.total`)})]}),(0,U.jsxs)(`div`,{className:`rounded bg-muted/40 p-1.5 text-center`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-center gap-1 text-success`,children:[(0,U.jsx)(o,{className:`h-3 w-3`}),(0,U.jsx)(`span`,{children:e.unreadCount||0})]}),(0,U.jsx)(`div`,{className:`text-muted-foreground`,children:t(`activity:office.unreadLabel`)})]})]}),e.sublabel&&(0,U.jsxs)(`div`,{className:`mt-2 truncate border-t border-border/60 pt-1.5 text-[9px] text-muted-foreground`,children:[`✉ `,e.sublabel]})]})}var ze={webui:Pe,tui:Z,repl:Fe,coordinator:Ie,agent:Le,mailbox:Q,desk:Re},Be={wire:({sourceX:e,sourceY:t,targetX:n,targetY:r,sourcePosition:i,targetPosition:a,data:o,selected:s})=>{let c=o?.color||q.primary,l=L(e=>e.animateEdges),u=o?.animated&&l?Math.max(.15,o?.intensity??.6):0,[d,f,p]=B({sourceX:e,sourceY:t,sourcePosition:i??V.Bottom,targetX:n,targetY:r,targetPosition:a??V.Top,curvature:.28}),m=5+u*7,h=5+u*4,g=m+h,_=`${Math.max(.5,1.6-u).toFixed(2)}s`;return(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(`path`,{d,fill:`none`,stroke:c,strokeWidth:s?2.5:1.4,strokeOpacity:s?.9:.28,className:`react-flow__edge-path`}),u>.05&&(0,U.jsx)(`path`,{d,fill:`none`,stroke:c,strokeWidth:2.2,strokeOpacity:.45+u*.5,strokeDasharray:`${m} ${h}`,strokeLinecap:`round`,style:{filter:`drop-shadow(0 0 ${2+u*4}px ${c})`},children:(0,U.jsx)(`animate`,{attributeName:`stroke-dashoffset`,from:g,to:`0`,dur:_,repeatCount:`indefinite`})}),o?.label&&u>.1&&(0,U.jsx)(ce,{children:(0,U.jsx)(`div`,{style:{position:`absolute`,transform:`translate(-50%, -50%) translate(${f}px, ${p}px)`},className:`pointer-events-none rounded-full border border-border/70 bg-card/90 px-1.5 py-0.5 text-[8px] font-medium text-foreground backdrop-blur-sm`,children:o.label})})]})}};function Ve({events:e,now:t}){let{t:n}=T(),r=e.slice(0,14);return(0,U.jsx)(`div`,{className:`absolute bottom-0 left-0 right-0 z-10 pointer-events-none px-3 pb-3`,children:(0,U.jsxs)(`div`,{className:`pointer-events-auto mx-auto max-w-3xl rounded-lg border border-border/70 bg-card/90 px-3 py-2 shadow-xl backdrop-blur`,children:[(0,U.jsxs)(`div`,{className:`mb-1.5 flex items-center gap-1.5 text-[10px] uppercase text-primary`,children:[(0,U.jsx)(c,{className:`h-3 w-3`}),n(`activity:office.liveActivity`)]}),r.length===0?(0,U.jsx)(`div`,{className:`text-[11px] italic text-muted-foreground`,children:n(`activity:office.waitingActivity`)}):(0,U.jsx)(`div`,{className:`flex flex-col gap-0.5 max-h-32 overflow-hidden`,children:r.map(e=>{let r=Math.max(0,Math.round((t-e.timestamp)/1e3));return(0,U.jsxs)(`div`,{className:`flex items-center gap-2 text-[11px] leading-tight`,children:[(0,U.jsx)(`span`,{className:`w-1.5 h-1.5 rounded-full shrink-0`,style:{backgroundColor:je(e.kind)}}),(0,U.jsx)(`span`,{className:`flex-1 truncate text-foreground`,children:e.label}),(0,U.jsx)(`span`,{className:`shrink-0 tabular-nums text-muted-foreground`,children:r<1?n(`activity:office.now`):`${r}s`})]},e.id)})})]})})}function $(){let{t:e}=T(),{fitView:t}=fe(),n=te(e=>e.events),r=A(e=>e.agents),i=A(e=>e.agentTranscripts),o=A(e=>e.leaderId),s=re(e=>e.liveSessions),c=j(e=>e.messages),f=O(e=>e.session),p=(0,H.useMemo)(()=>Ae(s,r),[s,r]),m=L(e=>e.showHud),h=L(e=>e.showLegend),v=L(e=>e.showMinimap),y=L(e=>e.showControls),x=L(e=>e.showFeed),S=L(e=>e.setShowFeed),C=L(e=>e.background),[ee,N,ie]=se([]),[ae,P,F]=oe([]),[I,R]=(0,H.useState)(null),[z,B]=(0,H.useState)(null),[ce,V]=(0,H.useState)(!1),[W,_e]=(0,H.useState)(``),[G,ve]=(0,H.useState)(!1),[ye,be]=(0,H.useState)(null),De=(0,H.useMemo)(()=>{if(I?.data.kind!==`agent`)return M;let e=I.data.serverId??(I.id.includes(`__agent-`)?I.id.split(`__agent-`).pop():I.id.replace(/^agent-/,``));return e?i.get(e)??M:M},[i,I]),ke=(0,H.useCallback)(async()=>{let e=W.trim();if(!(!e||G)){ve(!0),be(null);try{let t=await fetch(`/api/fleet/broadcast`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({text:e})});if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();_e(``),be(`Delivered to ${n.delivered??0}/${n.targets??0} session(s)`)}catch(e){be(`Failed: ${e instanceof Error?e.message:String(e)}`)}finally{ve(!1)}}},[W,G]),je=(0,H.useRef)(new Map),J=4e3,Y=(0,H.useRef)(new Map),X=(0,H.useRef)(new Map),Pe=(0,H.useRef)(new Map),Z=(0,H.useRef)(new Map),Fe=(0,H.useRef)(``);(0,H.useEffect)(()=>{let n=[],i=[],a=Date.now(),s=Math.max(1,...p.map(e=>e.agents.length||1)),l=Math.max(380,Math.min(3,s)*190+80),u=Te(p.map(e=>e.id),l),d=c.filter(e=>!e.completed&&(e.readByCount??0)===0).length,f=c.length?[...c].sort((e,t)=>Date.parse(t.timestamp)-Date.parse(e.timestamp))[0]:void 0;n.push({id:`mailbox`,type:`mailbox`,position:{x:830,y:50},data:{label:e(`activity:office.mailboxHub`),kind:`mailbox`,status:d>0?`active`:`idle`,unreadCount:d,messageCount:c.length,sublabel:f?`${f.from} → ${f.to}: ${f.subject}`:void 0,color:q.warning}});let m=0,h=0,g=0,_=0,v=0;for(let e of p)for(let t of e.agents)h+=1,(t.status===`active`||t.status===`streaming`)&&(m+=1),g+=t.toolCalls,_+=t.costUsd,v+=t.tokensIn+t.tokensOut;let y=o?r.get(o):null,b=m>0;n.push({id:`coordinator`,type:`coordinator`,position:{x:370,y:50},data:{label:e(`activity:office.fleetHqLabel`),sublabel:e(`activity:office.clientsSuffix`,{count:p.length}),kind:`coordinator`,status:y?.status===`failed`?`error`:b?`active`:`idle`,connections:p.length,agentsActive:m,agentsTotal:h,toolCalls:g,costUsd:_,tokensIn:v,color:q.primary}});let x={tui:q.success,webui:q.info,repl:q.warning};for(let t of p){let r=u.get(t.id)??600,o=x[t.type],s=t.status===`active`;if(n.push({id:t.id,type:t.type,position:{x:r,y:370},data:{label:t.label,sublabel:t.sublabel,kind:t.type,status:t.status,sessionId:t.sessionId,pid:t.pid,branch:t.branch,workingDir:t.workingDir,startedAt:t.startedAt,agentCount:t.agents.length,color:o}}),i.push({id:`${t.id}->coordinator`,source:t.id,target:`coordinator`,type:`wire`,animated:s,data:{color:o,animated:s,label:e(`activity:office.controlLabel`),flowType:`task`}}),i.push({id:`mailbox->${t.id}`,source:`mailbox`,target:t.id,type:`wire`,animated:d>0,data:{color:q.warning,animated:d>0,label:d>0?`${d}`:void 0,flowType:`mail`}}),t.agents.length===0){n.push({id:`desk-${t.id}`,type:`desk`,position:{x:r,y:640},data:{label:e(`activity:office.idleDesk`),kind:`agent`,status:`idle`,color:q.muted}});continue}t.agents.forEach((o,s)=>{let c=o.status===`active`||o.status===`streaming`,l=Z.current.get(o.serverId);if(l&&(o.toolCalls>l.toolCalls||o.iteration>l.iteration)||c){je.current.set(o.officeId,a+J);let e=X.current.get(o.officeId)??0;X.current.set(o.officeId,Math.min(1,e+(1-e)*.5));for(let e of[`${t.id}->${o.officeId}`,`${t.id}->coordinator`]){let t=Y.current.get(e)??0;Y.current.set(e,Math.min(1,t+.5))}}Z.current.set(o.serverId,{toolCalls:o.toolCalls,iteration:o.iteration}),n.push({id:o.officeId,type:`agent`,position:Ee(r,s,t.agents.length),data:{label:o.name,kind:`agent`,status:o.status,serverId:o.serverId,sessionId:t.sessionId,currentTask:o.currentTask,iteration:o.iteration,toolCalls:o.toolCalls,costUsd:o.costUsd,tokensIn:o.tokensIn,tokensOut:o.tokensOut,ctxPct:o.ctxPct,model:o.model,lastActivityAt:o.lastActivityAt,color:q.primary}}),i.push({id:`${t.id}->${o.officeId}`,source:t.id,target:o.officeId,type:`wire`,animated:c,data:{color:q.primary,animated:c,label:c?o.currentTask??e(`activity:office.taskFallback`):void 0,flowType:`task`}})})}let S=new Set(p.flatMap(e=>e.agents.map(e=>e.serverId)));for(let e of[...Z.current.keys()])S.has(e)||Z.current.delete(e);let C=n.map(e=>{let t=je.current.get(e.id),n=X.current.get(e.id)??0;return t&&t>a&&e.data.status!==`error`&&e.data.status!==`offline`?{...e,data:{...e.data,status:`active`,vizActivity:n}}:{...e,data:{...e.data,vizActivity:n}}}),w=i.map(e=>{let t=Y.current.get(e.id)??0;return t>.05?{...e,animated:!0,data:{...e.data,animated:!0,intensity:t}}:e}),T=new Map;for(let e of C)T.set(e.id,{...e.position});Pe.current=T,N(C),P(w);let E=C.map(e=>e.id).sort().join(`|`);if(E!==Fe.current){Fe.current=E;let e=setTimeout(()=>t({padding:.2,duration:300}),50);return()=>clearTimeout(e)}},[p,o,r,c,f,J,N,P,t]);let Ie=p.flatMap(e=>e.agents.map(t=>({clientId:e.id,clientType:e.type,officeId:t.officeId,serverId:t.serverId}))),Le=p.map(e=>e.id),Re=new Map;for(let e of Ie)(!Re.has(e.serverId)||e.clientType===`webui`)&&Re.set(e.serverId,e.officeId);function Q(e){return Re.get(e)??`agent-${e}`}function $(e){let t=e.split(`__agent-`)[0];return t&&t!==e?`${t}->${e}`:`coordinator->${e}`}function He(e){switch(e.kind){case`mailbox:send`:case`mailbox:deliver`:return{nodes:[`mailbox`],edges:e.kind===`mailbox:send`?Le.map(e=>`mailbox->${e}`):[],status:`active`};case`agent:spawned`:{let t=Q(e.source);return{nodes:[`coordinator`,t],edges:[$(t)],status:`active`}}case`agent:tool`:case`tool:started`:case`tool:progress`:{let t=Q(e.source);return{nodes:[`coordinator`,t],edges:[$(t)],status:e.kind===`tool:progress`||e.kind===`tool:started`?`streaming`:`active`}}case`tool:executed`:{let t=Q(e.target??e.source);return{nodes:[t],edges:[$(t)],status:`active`}}case`provider:call`:case`provider:delta`:case`provider:response`:return{nodes:[`coordinator`],edges:[],status:e.kind===`provider:delta`?`streaming`:`active`};case`iteration:start`:case`iteration:end`:return{nodes:[`coordinator`],edges:Ie.map(e=>$(e.officeId)),status:e.kind===`iteration:start`?`streaming`:`active`};case`agent:text`:{let t=Q(e.source);return{nodes:[t],edges:[$(t)],status:`streaming`}}case`agent:status`:{let t=Q(e.source);return{nodes:[`coordinator`,t],edges:[$(t)],status:e.data&&typeof e.data==`object`&&`status`in e.data&&String(e.data.status)===`failed`?`error`:`completed`}}case`agent:ctx`:return{nodes:[Q(e.source)],edges:[],status:`active`};case`budget:extended`:return{nodes:[`coordinator`,Q(e.source)],edges:[],status:`active`};case`context:compacted`:case`context:repaired`:return{nodes:[`coordinator`],edges:[],status:`active`};case`error`:return{nodes:e.source?[Q(e.source)]:[],edges:[],status:`error`};case`cost:update`:return{nodes:[`coordinator`],edges:[],status:`active`};case`fleet:snapshot`:{let t=e.data?.sessions??[],n=[`coordinator`];for(let e of t)if(e.agents)for(let t of e.agents){let e=Q(t.id);n.includes(e)||n.push(e)}return{nodes:n,edges:[],status:`active`}}default:return{nodes:[],edges:[],status:`idle`}}}(0,H.useEffect)(()=>{if(n.length===0)return;let e=n[0];if(!e)return;let{nodes:t,edges:r,status:i}=He(e),a=Date.now();t.length>0&&(t.forEach(e=>{je.current.set(e,a+J);let t=X.current.get(e)??0;X.current.set(e,Math.min(1,t+(1-t)*.5))}),N(e=>e.map(e=>t.includes(e.id)?{...e,data:{...e.data,status:i,vizActivity:X.current.get(e.id)??0}}:e))),r.length>0&&(r.forEach(e=>{let t=Y.current.get(e)??0;Y.current.set(e,Math.min(1,t+.5))}),P(e=>e.map(e=>r.includes(e.id)?{...e,animated:!0,data:{...e.data,animated:!0,intensity:Y.current.get(e.id)??1}}:e)))},[n,N,P,J,r]),(0,H.useEffect)(()=>{let e=setInterval(()=>{let e=new Map,t=!1;for(let[n,r]of Y.current){let i=r*.85;i<.05?(Y.current.delete(n),e.set(n,{intensity:0,animated:!1}),t=!0):(Y.current.set(n,i),e.set(n,{intensity:i,animated:!0}),t=!0)}t&&P(t=>t.map(t=>{let n=e.get(t.id);return n?{...t,animated:n.animated,data:{...t.data,animated:n.animated,intensity:n.intensity}}:t}));let n=new Map,r=!1;for(let[e,t]of X.current){let i=t*.9;i<.03?(X.current.delete(e),n.set(e,0),r=!0):(X.current.set(e,i),n.set(e,i),r=!0)}r&&N(e=>e.map(e=>{let t=n.get(e.id);return t===void 0?e:{...e,data:{...e.data,vizActivity:t}}}))},1e3);return()=>clearInterval(e)},[P,N]);let Ue=(0,H.useCallback)(e=>P(t=>le({...e,type:`wire`},t)),[P]),We=(0,H.useCallback)((e,t)=>{R(t)},[]),Ge=(0,H.useCallback)(()=>{R(null)},[]);(0,H.useEffect)(()=>{if(!z)return;let e=e=>{e.key===`Escape`&&B(null)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[z]);let Ke=(0,H.useCallback)(()=>{N(e=>e.map(e=>{let t=Pe.current.get(e.id);return t?{...e,position:{...t}}:e})),setTimeout(()=>t({padding:.2,duration:300}),50)},[N,t]),[,qe]=(0,H.useState)(0);return(0,H.useEffect)(()=>{let e=setInterval(()=>{document.hidden||qe(e=>e+1)},2e3);return()=>clearInterval(e)},[]),(0,U.jsxs)(`div`,{className:`relative h-full w-full overflow-hidden bg-[hsl(var(--surface-2)/0.55)]`,children:[(0,U.jsx)(`div`,{className:`absolute inset-0 opacity-[0.03]`,style:{backgroundImage:`
|
|
2
|
+
linear-gradient(rgba(255,255,255,0.1) 1px, transparent 1px),
|
|
3
|
+
linear-gradient(90deg, rgba(255,255,255,0.1) 1px, transparent 1px)
|
|
4
|
+
`,backgroundSize:`40px 40px`}}),m&&(0,U.jsx)(Ne,{}),(0,U.jsx)(`div`,{className:`absolute top-3 left-1/2 -translate-x-1/2 z-10`,children:(0,U.jsx)(`div`,{className:`rounded-lg border border-border/70 bg-card/90 px-4 py-2 shadow-xl backdrop-blur`,children:(0,U.jsxs)(`div`,{className:`flex items-center gap-2 text-xs font-bold text-foreground`,children:[(0,U.jsx)(a,{className:`h-4 w-4 text-primary`}),e(`activity:office.fleetHq`),(0,U.jsx)(`span`,{className:`ml-2 h-2 w-2 animate-pulse rounded-full bg-success`}),(0,U.jsx)(`span`,{className:`text-[10px] font-normal text-muted-foreground`,children:e(`activity:office.live`)})]})})}),h&&(0,U.jsxs)(`div`,{className:`absolute bottom-4 left-4 z-10 rounded-lg border border-border/70 bg-card/90 p-3 text-[10px] shadow-xl backdrop-blur`,children:[(0,U.jsx)(`div`,{className:`mb-2 font-bold text-foreground`,children:e(`activity:office.legendStatus`)}),(0,U.jsxs)(`div`,{className:`space-y-1`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`span`,{className:`h-2 w-2 animate-pulse rounded-full bg-success`}),(0,U.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.legendActive`)})]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`span`,{className:`h-2 w-2 rounded-full bg-muted-foreground`}),(0,U.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.legendIdle`)})]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`span`,{className:`h-2 w-2 animate-pulse rounded-full bg-destructive`}),(0,U.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.legendError`)})]})]})]}),h&&(0,U.jsxs)(`div`,{className:`absolute bottom-4 right-4 z-10 rounded-lg border border-border/70 bg-card/90 p-3 text-[10px] shadow-xl backdrop-blur`,children:[(0,U.jsx)(`div`,{className:`mb-2 font-bold text-foreground`,children:e(`activity:office.legendConnections`)}),(0,U.jsxs)(`div`,{className:`space-y-1`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`span`,{className:`text-warning`,children:`✉`}),(0,U.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.legendMail`)})]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`span`,{className:`text-primary`,children:`→`}),(0,U.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.legendTask`)})]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`span`,{className:`text-success`,children:`●`}),(0,U.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.legendStatusConn`)})]})]})]}),(0,U.jsxs)(ge,{nodes:ee,edges:ae,onNodesChange:ie,onEdgesChange:F,onConnect:Ue,onNodeClick:We,onPaneClick:Ge,nodeTypes:ze,edgeTypes:Be,fitView:!0,fitViewOptions:{padding:.2},minZoom:.3,maxZoom:1.5,defaultEdgeOptions:{type:`wire`},proOptions:{hideAttribution:!0},children:[(0,U.jsxs)(me,{position:`top-right`,className:`flex items-center gap-2`,children:[(0,U.jsxs)(`button`,{type:`button`,onClick:Ke,title:e(`activity:office.arrangeTitle`),className:`flex items-center gap-1.5 rounded-md border border-border/70 bg-card/90 px-2.5 py-1.5 text-xs text-foreground shadow-sm transition-colors hover:bg-accent`,children:[(0,U.jsx)(u,{className:`h-3.5 w-3.5`}),e(`activity:office.arrange`)]}),(0,U.jsxs)(`button`,{type:`button`,onClick:()=>S(!x),title:e(`activity:office.feedTitle`),className:k(`flex items-center gap-1.5 px-2.5 py-1.5 rounded-md border text-xs transition-colors`,x?`border-primary/35 bg-primary/10 text-primary`:`border-border/70 bg-card/90 text-muted-foreground hover:bg-accent hover:text-foreground`),children:[(0,U.jsx)(l,{className:`h-3.5 w-3.5`}),e(`activity:office.feed`)]}),(0,U.jsxs)(`button`,{type:`button`,onClick:()=>V(e=>!e),title:e(`activity:office.broadcastTitle`),className:k(`flex items-center gap-1.5 px-2.5 py-1.5 rounded-md border text-xs transition-colors`,ce?`border-warning/35 bg-warning/10 text-warning`:`border-border/70 bg-card/90 text-muted-foreground hover:bg-accent hover:text-foreground`),children:[(0,U.jsx)(w,{className:`h-3.5 w-3.5`}),e(`activity:office.broadcast`)]})]}),C!==`none`&&(0,U.jsx)(he,{variant:C===`lines`?ue.Lines:C===`cross`?ue.Cross:ue.Dots,gap:20,size:1,color:`hsl(var(--border) / 0.35)`}),y&&(0,U.jsx)(pe,{className:`rounded-lg border border-border/70 bg-card/90 [&>button]:bg-card [&>button]:text-foreground`}),v&&(0,U.jsx)(de,{className:`rounded-lg border border-border/70 bg-card/90`,nodeColor:e=>{switch(e.data.kind){case`coordinator`:return q.primary;case`webui`:return q.info;case`tui`:return q.success;case`repl`:return q.warning;case`mailbox`:return q.warning;case`agent`:return q.primary;default:return q.primary}},maskColor:`hsl(var(--background) / 0.72)`})]}),x&&(0,U.jsx)(Ve,{events:n,now:Date.now()}),ce&&(0,U.jsxs)(`div`,{className:`absolute right-4 top-16 z-30 w-80 rounded-xl border border-warning/35 bg-card/95 p-3 shadow-2xl backdrop-blur`,children:[(0,U.jsxs)(`div`,{className:`mb-1.5 flex items-center justify-between`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[11px] font-semibold text-warning`,children:[(0,U.jsx)(w,{className:`h-3.5 w-3.5`}),` `,e(`activity:office.broadcastToAll`)]}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>V(!1),className:`text-base leading-none text-muted-foreground hover:text-foreground`,children:`×`})]}),(0,U.jsx)(`textarea`,{value:W,onChange:e=>_e(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),ke())},rows:3,placeholder:e(`activity:office.broadcastPlaceholder`),className:`w-full resize-none rounded-md border border-border/70 bg-background/70 px-2 py-1 text-[11px] text-foreground placeholder:text-muted-foreground focus:border-warning/45 focus:outline-none`}),(0,U.jsxs)(`div`,{className:`mt-1.5 flex items-center justify-between`,children:[(0,U.jsx)(`span`,{className:`text-[9px] text-muted-foreground`,children:e(`activity:office.broadcastSendHint`)}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>void ke(),disabled:G||!W.trim(),className:`rounded-md border border-warning/35 bg-warning/12 px-2.5 py-1 text-[11px] text-warning transition-colors hover:bg-warning/18 disabled:cursor-not-allowed disabled:opacity-40`,children:G?`…`:e(`activity:office.broadcast`)})]}),ye&&(0,U.jsx)(`div`,{className:`mt-1 text-[10px] text-muted-foreground`,children:ye})]}),I&&(0,U.jsxs)(`div`,{className:k(`absolute top-20 right-4 bg-background border border-border rounded-lg p-4 shadow-xl z-20`,I.data.kind===`agent`?`w-[28rem] max-w-[calc(100%-2rem)]`:I.data.sessionId?`w-80`:`w-64`),children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between mb-3`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[I.data.kind===`webui`&&(0,U.jsx)(b,{className:`h-4 w-4 text-info`}),I.data.kind===`tui`&&(0,U.jsx)(E,{className:`h-4 w-4 text-success`}),I.data.kind===`coordinator`&&(0,U.jsx)(g,{className:`h-4 w-4 text-primary`}),I.data.kind===`agent`&&(0,U.jsx)(d,{className:`h-4 w-4 text-primary`}),I.data.kind===`mailbox`&&(0,U.jsx)(_,{className:`h-4 w-4 text-warning`}),(0,U.jsx)(`span`,{className:`text-sm font-bold text-foreground`,children:I.data.label})]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[I.data.sessionId&&(0,U.jsx)(`button`,{type:`button`,title:e(`activity:office.openFullView`),onClick:()=>B({sessionId:I.data.sessionId,label:I.data.label}),className:`text-muted-foreground hover:text-primary`,children:(0,U.jsx)(D,{className:`h-3.5 w-3.5`})}),(0,U.jsx)(`button`,{type:`button`,onClick:Ge,className:`text-muted-foreground hover:text-foreground text-lg leading-none`,children:`×`})]})]}),(()=>{let t=I.data,n=Date.now(),r=({k:e,v:t,accent:n})=>(0,U.jsxs)(`div`,{className:`flex justify-between gap-3`,children:[(0,U.jsx)(`span`,{className:`text-muted-foreground shrink-0`,children:e}),(0,U.jsx)(`span`,{className:k(`font-mono truncate text-right`,n??`text-foreground/80`),children:t})]}),i=t.kind===`agent`,a=t.kind===`webui`||t.kind===`tui`||t.kind===`repl`,o=(t.tokensIn||0)+(t.tokensOut||0),s=Me(t.ctxPct);return(0,U.jsxs)(`div`,{className:`space-y-1.5 text-xs`,children:[(0,U.jsx)(r,{k:`Status`,v:String(t.status).toUpperCase(),accent:k(t.status===`active`&&`text-success`,t.status===`streaming`&&`text-primary`,t.status===`error`&&`text-destructive`,t.status===`idle`&&`text-muted-foreground`,t.status===`offline`&&`text-muted-foreground/70`)}),i&&(0,U.jsxs)(U.Fragment,{children:[t.model&&(0,U.jsx)(r,{k:`Model`,v:we(t.model),accent:`text-primary`}),t.currentTask&&(0,U.jsx)(r,{k:`Tool`,v:t.currentTask,accent:`text-primary`}),(0,U.jsx)(r,{k:`Iterations`,v:t.iteration||0,accent:`text-primary`}),(0,U.jsx)(r,{k:`Tool calls`,v:t.toolCalls||0,accent:`text-warning`}),(0,U.jsx)(r,{k:`Tokens in`,v:K(t.tokensIn)}),(0,U.jsx)(r,{k:`Tokens out`,v:K(t.tokensOut)}),(0,U.jsx)(r,{k:`Tokens total`,v:K(o)}),s>0&&(0,U.jsx)(r,{k:`Context`,v:`${s}%`,accent:s>=90?`text-destructive`:s>=70?`text-warning`:`text-foreground/70`}),(0,U.jsx)(r,{k:`Cost`,v:`$${(t.costUsd||0).toFixed(4)}`,accent:`text-success`}),t.lastActivityAt&&(0,U.jsx)(r,{k:`Last seen`,v:Se(t.lastActivityAt,n),accent:`text-muted-foreground`}),(0,U.jsx)(`div`,{className:`pt-2`,children:(0,U.jsx)(ne,{entries:De,agentName:t.label,compact:!0,maxHeightClassName:`max-h-64`})})]}),a&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(r,{k:`Surface`,v:Oe(t.kind),accent:`text-foreground/80`}),t.branch&&(0,U.jsx)(r,{k:`Branch`,v:`⎇ ${t.branch}`,accent:`text-foreground/70`}),t.pid!=null&&(0,U.jsx)(r,{k:`PID`,v:t.pid}),t.workingDir&&(0,U.jsx)(r,{k:`Dir`,v:t.workingDir,accent:`text-muted-foreground`}),(0,U.jsx)(r,{k:`Agents`,v:t.agentCount??0,accent:`text-primary`}),t.startedAt&&(0,U.jsx)(r,{k:`Uptime`,v:Ce(t.startedAt,n),accent:`text-foreground/70`})]}),t.kind===`mailbox`&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(r,{k:`Total messages`,v:t.messageCount||0,accent:`text-warning`}),(0,U.jsx)(r,{k:`Unread`,v:t.unreadCount||0,accent:`text-warning`}),c.length>0&&(0,U.jsxs)(`div`,{className:`mt-1 space-y-1 border-t border-border pt-2`,children:[(0,U.jsx)(`div`,{className:`text-[10px] uppercase tracking-wide text-muted-foreground`,children:e(`activity:office.recent`)}),[...c].sort((e,t)=>Date.parse(t.timestamp)-Date.parse(e.timestamp)).slice(0,6).map(t=>(0,U.jsxs)(`div`,{className:`flex items-start gap-1.5 text-[10px]`,children:[(0,U.jsx)(`span`,{className:k(`mt-1 h-1.5 w-1.5 shrink-0 rounded-full`,!t.completed&&(t.readByCount??0)===0?`bg-warning`:t.completed?`bg-success`:`bg-muted`)}),(0,U.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,U.jsx)(`div`,{className:`truncate text-foreground/80`,children:t.subject||e(`activity:office.noSubject`)}),(0,U.jsxs)(`div`,{className:`truncate font-mono text-[9px] text-muted-foreground`,children:[t.from,` → `,t.to,` · `,Se(t.timestamp,n)]})]})]},t.id))]})]}),t.kind===`coordinator`&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(r,{k:`Connections`,v:t.connections||0,accent:`text-primary`}),(0,U.jsx)(r,{k:`Iterations`,v:t.iteration||0,accent:`text-primary`})]}),(i||a)&&t.sessionId&&(0,U.jsx)(`div`,{className:`mt-2 border-t border-border pt-2 h-72`,children:(0,U.jsx)(xe,{sessionId:t.sessionId})})]})})()]}),z&&(0,U.jsxs)(`div`,{className:`absolute inset-y-0 right-0 z-30 flex w-[min(680px,92%)] flex-col border-l border-border bg-background shadow-2xl`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between border-b border-border px-4 py-2.5 shrink-0 bg-card`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,U.jsx)(d,{className:`h-4 w-4 text-primary shrink-0`}),(0,U.jsxs)(`div`,{className:`min-w-0`,children:[(0,U.jsx)(`div`,{className:`truncate text-sm font-bold text-foreground`,children:z.label}),(0,U.jsx)(`div`,{className:`text-[10px] uppercase tracking-wide text-muted-foreground`,children:e(`activity:office.fullOperationStream`)})]})]}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>B(null),title:e(`activity:office.closeEsc`),className:`text-muted-foreground hover:text-foreground text-xl leading-none shrink-0`,children:`×`})]}),(0,U.jsx)(`div`,{className:`flex-1 min-h-0 p-4`,children:(0,U.jsx)(xe,{sessionId:z.sessionId,limit:500})})]})]})}function He(){return(0,U.jsx)(z,{children:(0,U.jsx)($,{})})}export{He as OfficeMapPanel};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{m as t,p as n}from"./markdown-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{m as t,p as n}from"./markdown-BRAejDWd.js";import{bt as r,mi as i,pt as a,wt as o}from"./vendor-C9iFsXuW.js";import"./i18n-ClFSbktB.js";import{t as s}from"./utils-Bl7Yr7Bw.js";import{C as c,J as l,O as u,T as d,j as f,w as p}from"./index-DGwt4pL3.js";var m=e(t(),1),h=n();function g({open:e,onClose:t,className:n}){let{t:g}=i(),[_,v]=(0,m.useState)([]),y=f(),b=l(e=>e.wsConnected),x=(0,m.useRef)(null),S=(0,m.useRef)(null);(0,m.useEffect)(()=>{if(!(!e||!b||!y.client?.isConnected))return y.client.send?.({type:`process.list`}),x.current=y.client.on?.(`process.list`,e=>{let t=e?.payload;t?.processes&&v(t.processes)})??null,S.current=setInterval(()=>{y.client.send?.({type:`process.list`})},3e3),()=>{x.current?.(),S.current&&clearInterval(S.current)}},[e,b,y.client]);let C=(0,m.useCallback)(e=>{y.client.send?.({type:`process.kill`,payload:{pid:e}})},[y.client]),w=(0,m.useCallback)(()=>{y.client.send?.({type:`process.killAll`})},[y.client]),T=_.filter(e=>e.status===`running`);return(0,h.jsx)(c,{open:e,onOpenChange:e=>{e||t()},children:(0,h.jsxs)(p,{className:s(`max-w-lg gap-0 p-0 overflow-hidden flex flex-col max-h-[75dvh] pt-[10dvh]`,n),showCloseButton:!1,children:[(0,h.jsx)(u,{className:`sr-only`,children:g(`activity:process.heading`)}),(0,h.jsx)(d,{className:`sr-only`,children:g(`activity:process.subtitle`,{active:T.length,total:_.length})}),(0,h.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-3 border-b shrink-0`,children:[(0,h.jsxs)(`div`,{className:`flex items-center gap-2.5`,children:[(0,h.jsx)(`span`,{className:`flex items-center justify-center w-8 h-8 rounded-lg bg-warning/10 text-warning`,children:(0,h.jsx)(a,{className:`h-4 w-4`})}),(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`h2`,{className:`text-sm font-semibold`,children:g(`activity:process.heading`)}),(0,h.jsx)(`span`,{className:`text-[10px] text-muted-foreground tabular-nums`,children:g(`activity:process.subtitle`,{active:T.length,total:_.length})})]})]}),(0,h.jsx)(`div`,{className:`flex items-center gap-1`,children:T.length>0&&(0,h.jsxs)(`button`,{type:`button`,onClick:w,className:`flex items-center gap-1.5 px-2.5 py-1.5 rounded-md text-xs text-destructive hover:bg-destructive/10 transition-colors font-medium`,children:[(0,h.jsx)(r,{className:`h-3 w-3 fill-current`}),g(`activity:process.killAll`)]})})]}),(0,h.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto`,children:_.length===0?(0,h.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-16 gap-3 text-muted-foreground`,children:[(0,h.jsx)(a,{className:`h-10 w-10 opacity-15`}),(0,h.jsx)(`p`,{className:`text-sm font-medium`,children:g(`activity:process.emptyTitle`)}),(0,h.jsx)(`p`,{className:`text-xs text-center max-w-xs`,children:g(`activity:process.emptyBody`)})]}):(0,h.jsx)(`div`,{className:`divide-y`,children:_.map(e=>{let t=e.status===`running`?Math.floor((Date.now()-e.startedAt)/1e3):null,n=t?t<60?`${t}s`:`${Math.floor(t/60)}m ${t%60}s`:null,i=e.protected===!0;return(0,h.jsxs)(`div`,{className:s(`flex items-center justify-between px-4 py-3 text-xs transition-colors`,e.status===`running`?`bg-background hover:bg-muted/30`:`bg-muted/20 text-muted-foreground`),children:[(0,h.jsxs)(`div`,{className:`flex items-center gap-3 min-w-0 flex-1`,children:[(0,h.jsx)(`span`,{className:s(`led shrink-0`,e.status===`running`?i?`text-info`:`text-success led-pulse`:`text-muted-foreground`)}),(0,h.jsxs)(`div`,{className:`min-w-0`,children:[(0,h.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,h.jsx)(`span`,{className:`font-mono text-[10px] text-muted-foreground shrink-0`,children:g(`activity:process.pidLabel`,{pid:e.pid})}),(0,h.jsx)(`span`,{className:`font-medium truncate`,children:e.tool}),i&&(0,h.jsxs)(`span`,{className:`inline-flex items-center gap-0.5 px-1 py-0.5 rounded text-[9px] bg-info/10 text-info font-medium shrink-0`,title:g(`activity:process.protectedTitle`),children:[(0,h.jsx)(o,{className:`h-2.5 w-2.5`}),g(`activity:process.protected`)]})]}),(0,h.jsx)(`code`,{className:`text-[10px] text-muted-foreground/70 truncate block mt-0.5 font-mono`,children:e.command})]})]}),(0,h.jsxs)(`div`,{className:`flex items-center gap-3 shrink-0 ml-3`,children:[n&&(0,h.jsx)(`span`,{className:`text-[10px] text-muted-foreground tabular-nums`,children:n}),e.status===`running`&&!i&&(0,h.jsx)(`button`,{type:`button`,onClick:()=>C(e.pid),className:`p-1.5 rounded-md hover:bg-destructive/10 hover:text-destructive transition-colors`,title:g(`activity:process.killTitle`,{pid:e.pid}),children:(0,h.jsx)(r,{className:`h-3.5 w-3.5 fill-current`})})]})]},e.pid)})})})]})})}export{g as ProcessMonitor};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./chat-store-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./chat-store-Dy1m3oen.js";import{m as n,p as r}from"./markdown-BRAejDWd.js";import{Z as i,di as a,dt as o,mi as s,ui as c,vn as l}from"./vendor-C9iFsXuW.js";import"./i18n-ClFSbktB.js";import{t as u}from"./utils-Bl7Yr7Bw.js";import{C as d,O as f,T as p,w as m}from"./index-DGwt4pL3.js";var h=e(n(),1),g=r(),_={btw:{label:`btw`,titleKey:`btwTitle`,tone:`bg-primary/10 text-primary border-primary/30`},steer:{label:`steer`,titleKey:`steerTitle`,tone:`bg-warning/10 text-warning border-warning/35`},queue:{label:`queue`,titleKey:`queueTitle`,tone:`bg-info/10 text-info border-info/30`}};function v({open:e,onClose:n,className:r}){let{t:v}=s(),y=t(e=>e.queue),b=t(e=>e.removeQueued),x=t(e=>e.clearQueue),[S,C]=(0,h.useState)(`oldest`),w=(0,h.useCallback)(e=>{b(e)},[b]),T=(0,h.useMemo)(()=>{let e=y.map((e,t)=>({item:e,sourceIdx:t}));return e.sort((e,t)=>S===`newest`?t.item.addedAt-e.item.addedAt:e.item.addedAt-t.item.addedAt),e},[y,S]);return(0,g.jsx)(d,{open:e,onOpenChange:e=>{e||n()},children:(0,g.jsxs)(m,{className:u(`max-w-lg gap-0 overflow-hidden border-border/80 bg-card p-0 pt-[10dvh] flex flex-col max-h-[70dvh]`,r),showCloseButton:!1,children:[(0,g.jsx)(f,{className:`sr-only`,children:v(`activity:queue.heading`)}),(0,g.jsx)(p,{className:`sr-only`,children:v(`activity:queue.subtitle`,{count:y.length})}),(0,g.jsxs)(`div`,{className:`flex items-center justify-between border-b border-border/70 bg-card/95 px-4 py-3 shrink-0`,children:[(0,g.jsxs)(`div`,{className:`flex items-center gap-2.5`,children:[(0,g.jsx)(`span`,{className:`flex items-center justify-center w-8 h-8 rounded-md border border-primary/20 bg-primary/10 text-primary`,children:(0,g.jsx)(l,{className:`h-4 w-4`})}),(0,g.jsxs)(`div`,{children:[(0,g.jsx)(`h2`,{className:`text-sm font-semibold`,children:v(`activity:queue.heading`)}),(0,g.jsx)(`span`,{className:`text-[10px] text-muted-foreground tabular-nums`,children:v(`activity:queue.subtitle`,{count:y.length})})]})]}),(0,g.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,g.jsxs)(`button`,{type:`button`,onClick:()=>C(e=>e===`newest`?`oldest`:`newest`),className:u(`flex items-center gap-1.5 px-2.5 py-1.5 rounded-md text-xs transition-colors font-medium`,`text-muted-foreground hover:bg-muted hover:text-foreground`),title:v(S===`newest`?`activity:queue.sortNewestTitle`:`activity:queue.sortOldestTitle`),"data-testid":`queue-sort-toggle`,children:[S===`newest`?(0,g.jsx)(a,{className:`h-3 w-3`}):(0,g.jsx)(c,{className:`h-3 w-3`}),v(S===`newest`?`activity:queue.newest`:`activity:queue.oldest`)]}),y.length>0&&(0,g.jsxs)(`button`,{type:`button`,onClick:()=>x(),className:`flex items-center gap-1.5 px-2.5 py-1.5 rounded-md text-xs text-destructive hover:bg-destructive/10 transition-colors font-medium`,title:v(`activity:queue.clearTitle`),"data-testid":`queue-clear-all`,children:[(0,g.jsx)(o,{className:`h-3 w-3`}),v(`activity:queue.clear`)]})]})]}),(0,g.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto`,children:y.length===0?(0,g.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-16 gap-3 text-muted-foreground`,children:[(0,g.jsx)(l,{className:`h-10 w-10 opacity-15`}),(0,g.jsx)(`p`,{className:`text-sm font-medium`,children:v(`activity:queue.emptyTitle`)}),(0,g.jsx)(`p`,{className:`text-xs text-center max-w-xs`,children:v(`activity:queue.emptyBody`)})]}):(0,g.jsx)(`ul`,{className:`divide-y divide-border/60`,"data-testid":`queue-list`,children:T.map(({item:e,sourceIdx:t},n)=>{let r=_[e.mode];return(0,g.jsxs)(`li`,{className:`flex items-start justify-between gap-3 px-4 py-3 text-xs transition-colors hover:bg-muted/35`,"data-testid":`queue-item`,children:[(0,g.jsxs)(`div`,{className:`flex items-start gap-3 min-w-0 flex-1`,children:[(0,g.jsxs)(`span`,{className:`mt-1 text-[10px] font-mono text-muted-foreground shrink-0 w-5 text-right tabular-nums`,children:[n+1,`.`]}),(0,g.jsx)(`span`,{className:u(`shrink-0 inline-flex items-center justify-center rounded border px-1.5 py-0.5 text-[10px] font-semibold uppercase`,r.tone),title:v(`activity:queue.${r.titleKey}`),"data-testid":`queue-mode-${e.mode}`,children:r.label}),(0,g.jsx)(`p`,{className:`text-sm text-foreground leading-relaxed min-w-0 break-words`,children:e.text.length>120?`${e.text.slice(0,117)}…`:e.text})]}),(0,g.jsx)(`button`,{type:`button`,onClick:()=>w(t),className:`ml-1 p-1.5 rounded-md shrink-0 hover:bg-destructive/10 hover:text-destructive transition-colors`,title:v(`activity:queue.removeTitle`),"data-testid":`queue-remove-${t}`,children:(0,g.jsx)(i,{className:`h-3.5 w-3.5`})})]},`${e.addedAt}-${t}`)})})}),y.length>0&&(0,g.jsx)(`div`,{className:`border-t border-border/70 bg-muted/20 px-4 py-2.5 shrink-0`,children:(0,g.jsx)(`p`,{className:`text-[10px] text-muted-foreground text-center`,children:v(`activity:queue.footer`)})})]})})}export{v as QueuePanel};
|